我在运行这段代码时遇到了内存异常,限制是堆的大小。有没有人能建议一下是否有办法进一步优化这段代码?
public class getCustomerList {
public static List <Customer> retrieve() throws ParseException {
List<Customer> customers = new ArrayList<Customer>();
for (int i = 0; i < 100000; i++) {
Customer customer = new Customer();
customer.setAge(new Integer(i));
customer.setBirthDate((new SimpleDateFormat("ddMMyyyy")).parse("01061986"));
customer.setName("Customer" + new String((new Integer(i)).toString()));
customers.add(customer);
}
return customers;
}
}
1条答案
按热度按时间yyhrrdl81#
一些可能有用的想法:
1.使age成为基元,如果它已经是基元,则为该方法提供
int
,而不是Integer
。1.将
SimpleDateFormat
移出循环,当前您创建了100000个相同的示例。1.您真的需要为每个客户设置100000个相同的
Date
示例吗?如果不需要,您可以在每个客户中设置相同的日期示例。1.当前的名字创建效率很低,你创建
Integer
对象,然后从它创建字符串(整数被丢弃),然后创建所述字符串的副本(并丢弃初始的)。