Java中在foreach循环中调用Remove在Java中,在使用foreach循环迭代集合时调用Remove是合法的吗?例如:List<String> names = ....for (String name : names) {
// Do something
names.remove(name).}作为增编,删除尚未重复的项目是否合法?例如,//Assume that the names list as duplicate entriesList<String> names = ....for (String name : names) {
// Do something
while (names.remove(name));}
3 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
List<String> names = ....Iterator<String> i = names.iterator();while (i.hasNext()) { String s = i.next(); // must be called before you can call i.remove() // Do something i.remove();}
这个类的迭代器和listIterator方法返回的迭代器是快速失败的:如果列表在创建迭代器之后的任何时候进行了结构上的修改,那么除了通过迭代器自己的Remove或Add方法,迭代器将抛出一个ConcurrentModificationException。因此,在并发修改的情况下,迭代器会迅速而干净地失败,而不是在未来某个未定的时间冒着任意的、不确定的行为的风险。
收到一只叮咚
TA贡献1821条经验 获得超4个赞
Iterator.remove
.
如果基础集合在迭代过程中被修改,则迭代器的行为将不指定,除非调用此方法。
List<String> names = ....Iterator<String> it = names.iterator();while (it.hasNext()) { String name = it.next(); // Do something it.remove();}
Iterator.remove
List.remove
.
增编:
Iterator
Iterator
.
添加回答
举报
0/150
提交
取消