【发布时间】:2015-05-21 13:43:51
【问题描述】:
我知道这里有很多类似的问题。但这似乎以前没有讨论过。
总的来说,我想知道,如果没有元素被删除,为什么要在 For-Each 循环上使用迭代器?所以,基本上只是迭代Collection,唯一使用的修饰符是add。
我知道如果从Collection 中删除元素,Iterator 是唯一的保存选项。
性能不是参数,因为For-Each 将被编译器转换为迭代器。
Iterator 更冗长,所以 +1 到 For-Each。
在所描述的场景中使用 Iterator over For-Each 是否有任何可靠的点?
【问题讨论】:
-
我想不出任何令人信服的理由,因为它们本质上是一样的。我只是觉得 for each 看起来更好,更容易阅读。
-
我假设foreach,你的意思是
for(Object o : yourCollection)?在这种情况下,您必须小心ConcurrentModificationException -
@Tgsmith61591 “如果没有元素将被删除”
-
如果您要添加到基础集合中,也可以获得
ConcurrentModificationException。 -
@yshavit,是的,但是在向基础集合添加元素时,两种方法都有助于避免
ConcurrentModificationException。
标签: java loops foreach iterator