我们都知道这是非法的,并且会抛出ConcurrentModificationException
:
for (Item i : theList) {
if (i.num == 123)
foo(i); // foo modifies theList
}
但是这个呢?
for (Item i : theList) {
if (i.num == 123) {
foo(i); // foo modifies theList
break;
}
}
因为循环在theLists
' 的迭代器next
被调用之前被打破,所以没有ConcurrentModificationException
. 但这是否使其合法?