【发布时间】:2020-02-13 05:45:53
【问题描述】:
我正在尝试从集合 (someObjectSet) 中删除元素,同时循环遍历它。 正如我用谷歌搜索的那样,在这种情况下使用 removeIf 应该避免 ConcurrentModificationException 。 但是这对我不起作用。
谷歌是否对我撒谎(或者我误解了它),或者我没有正确使用 removeIf?
Set<SomeObject> someObjectSet = new HashSet<>();
someObjectSet.add(obj1);
someObjectSet.add(obj2);
someObjectSet.add(obj3);
for (SomeObject obj : someObjectSet ){
...
someObjectSet.removeIf(ele -> if ele satisfies some condition)
}
我想在循环内执行 removeif 的原因是,在每个循环中,可以确定该集合的其他一些元素不再需要进入循环,因此我将其删除以便 for循环不会再次拾取它们。
例如,
在 loop1 中,obj1 被选中。
然后在同一个循环中发现 obj2 不再需要处理 => 从集合中删除 obj2。
在loop2中,而不是obj2,obj3被拾取
提前致谢!
【问题讨论】:
标签: java collections