哪些循环更有效?

时间:2014-02-15 14:15:33

标签: java arraylist iterator

我在Java中有这三个集合:

ArrayList<Integer> list1 = new ArrayList<Integer>(6000);
ArrayList<Integer> list2 = new ArrayList<Integer>(6000);
ArrayList<Integer> list3 = new ArrayList<Integer>(6000);

循环并设置为0更有效?

for(int i =0; i < rHist.size(); i++) {
    list1.set[i] = 0;
    list2.set[i] = 0;
    list3.set[i] = 0;
}

还是这个?

for (int n : list1) {
    n = 0;
}


for (int n : list2) {
    n = 0;
}


for (int n : list3) {
    n = 0;
}

由于

2 个答案:

答案 0 :(得分:1)

正如评论中已经提到的,这两种变体都没有达到您所说的目标。话虽这么说,更好看的是编写可读,可理解和简短的代码,并且不要使用Collections API中给出的方法。类似的东西用6000份零填充你的列表:

List<Integer> list = Collections.nCopies(6000, 0);

如果您之后需要改变列表,则需要将其包装在可修改的List中,如下所示:

List<Integer> list = new ArrayList<Integer>(Collections.nCopies(6000, 0));

答案 1 :(得分:0)

第一个更好,因为如果你在循环中将大小设置为6000,则循环一次而不是三次,并且该集应该看起来像list1.set(i,0)而不是list1[i]=0

如果你对它们进行反编译,你可以认为它们属于主要部分,你可以看到你自己发生的事情