做一次if比较 和一次new操作 哪个需要花费的时间长一些 欢迎拍砖~~
比如说一个方法要返回一个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);
}
}