比如说一个方法要返回一个List list, list=A() 是刚开始就初始化为new ArrayList() ,每次判断是否为空,才生成一个list 那种效率高点呢? 欢迎详细讨论,哈~~~
------解决方案--------------------
new操作费时
------解决方案--------------------
无解
if (x == 1)
和
if (x == 1 && x > foo())
其中,
public int foo() {
try {
Thread.sleep(10000);
} catch (Exception ex) {
}
return 100;
}
同样道理,构造函数也可以写的很复杂,也可以sleep
------解决方案--------------------
你意思是
1.List list = new ArrayList()
2.if(list == null) {
list = new ArrayList();
}
------解决方案--------------------
list = A();
list = list == null ? new ArrayList() : list;
or
A() {
return list == null ? new ArrayList() : list;
}
------解决方案--------------------
A() {
List list = new ArrayList()
return list;
}
------解决方案--------------------
List l = YourMethod();
if (l == null)
{
l = new ArrayList();
}
还有别的做法?
------解决方案--------------------
这题好有意思。
1.
List list = null;
if(list == null){
list = new ArrayList();
}
2.
List list = new ArrayList();
这第一种情况肯定比第二种情况要费时,因为多加了一个if嘛,而根据list的值不同时间差异也会缩小是吧,所以这里的时间完全可以忽略不计。
是否要判断这应该是跟你的业务挂√的。
下面写一个小DEMO。
- Java code
public class Order { private String name; // private Set<OrderLine> orderLines = new HashSet<OrderLine>(); public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<OrderLine> getOrderLines() { // return Collections.unmodifiableSet(orderLines); } public void addOrderLine(OrderLine orderLine) { // orderLines.add(orderLine); } public void setOrderLines(Set<OrderLine> orderLines) { // this.orderLines = orderLines; // 为什么没有向上面来做,是因为如果是这样赋值的话那么两个对象就是同一个引用了。 // 用户修改orderLines,this.orderLines也同样会被修改。 // 而提供这个类希望用户通过该类提供的接口来修改orderLines。 orderLines.addAll(orderLines); } }