java中的iterate和for循环中哪一个更好?

时间:2012-09-08 11:42:15

标签: java for-loop loops

请告诉我for循环和迭代之间的区别?我何时应该使用/ iterate?

前: -

for(int i=0;i<arrayList.size();i++)
{
System.out.println(arrayList.get(i));
}


// using iterator
Iterator animalItr = animalList.iterator();

    while(animalItr.hasNext()) {
      String animalObj = (String)animalItr.next();
      System.out.println(animalObj);
}

3 个答案:

答案 0 :(得分:4)

通过迭代器循环比通过索引更通用。迭代器可用于迭代任何集合。相比之下,位置索引是序列容器的技术细节。您可能想要成为这个特定的唯一原因是容器的顺序性质是您的问题所固有的,并且您需要知道算法的数字位置。

但是否则,一般来说,你应该更喜欢迭代器样式,因为它更通用,因此会导致更统一的代码。您的代码的不同部分可能使用不同的容器(或者您甚至可能希望稍后更改容器),但如果您以相同的方式编写所有容器,您将立即识别迭代,而不是根据详细信息具有不同的样式。容器。

也就是说,每当你只想对容器中的每个元素进行操作时,更不希望使用基于范围的for循环,而不想整个修改整个容器(通过insert /删除)。当你说for (String s : arrayList) { /*...*/ }时,你甚至不需要提到容器的名称或循环体中的任何迭代器的名称!考虑到这一点,迭代器(或索引)循环应保留用于您决定需要修改容器的循环的情况,例如:通过删除当前元素,或者容器内元素的位置是相关的。

答案 1 :(得分:0)

当它到达Iterable个对象时,我个人会使用for-each循环:

for(Type t : iterableObject) {
 //body
}

答案 2 :(得分:0)

使用迭代器迭代Collection是遍历Collection的最安全,最快捷的方法。

对于像ArrayList这样的集合,它们是由阵列支持的,它可能没什么区别。

使用迭代器的最佳原因之一是您可以安全地修改集合而不会引发ConcurrentModificationException