0

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

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());
    }

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

4

1 回答 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);
}
于 2014-02-05T06:03:42.647 回答