迭代引用对象列表

问题描述 投票:0回答:1

谁能建议我选择哪个选项以及为什么?

List<MyObject> list =  new ArrayList<MyObject>();
// insert some objects for it

1). for(int i = 0 ; i < list.size() ; i ++ ) {
       System.out.println(list.get(i).getAttribute1());
       System.out.println(list.get(i).getAttribute2());
    }

2). for(int i = 0 ; i < list.size() ; i ++ ) {
        MyObject obj = list.get(i);
        System.out.println(obj.getAttribute1());
        System.out.println(obj.getAttribute2());
    }

是的,我知道......他们会产生相同的结果,但我想知道哪个选项效率更高,格式更好,广泛使用,为什么?我只是注意到第一个选项在它们之间写的时间比另一个更长。有什么建议 ?

java performance optimization well-formed
1个回答
1
投票

选项:1 Get在列表中使用两次,这是一个额外的过程

选项:2只使用一个get来减少过程。所以与选项相比,这是更好的:1

在两个选项中,将为for循环的每次迭代计算list.size()。为避免这种情况,您可以在迭代开始之前计算长度,

for (int i = 0, length = list.size(); i < length; i ++) {
   // your code here

}

有效的方法是使用for each循环,

for (MyObject obj: list) {
  System.out.println(obj.getAttribute1);
}
© www.soinside.com 2019 - 2024. All rights reserved.