从性能的角度来看,我有一个
class someClass {
private List<type> data;
public List<type> getData()
{
return data;
}
}
class someOtherClass {
private someClass instance;
private someMethod() {
// heavy loop
for (...) {
}
}
}
在直接调用的重循环中效率更高(可能超过一次)
instance.getData().get(index).someOtherMethod();
或更适合在循环之前做出类似的事情:
localData = someClass.getData();
并在循环中使用localData
来满足每个需求吗?
编辑:假设getData()方法做了其他一些事情,编译器优化仍然有效吗?
class someClass {
private List<type> data;
public List<type> getData()
{
makeSomething();
return data;
}
}
答案 0 :(得分:1)
如果您想要实际有效get(index)
O(n)
加上你在forloop中使O(n^2)
big-O
使用增强的forloop
而不是使用常规的forloop<强>样品:强>
for(someClass s: yourList){}
现在,如果不使用增强型forloop调用get(index)
,则会O(n)
而不是O(n^2)