我在做:
for (Object key : map.keySet())
if (something)
map.remove(key);
这引发了ConcurrentModificationException,所以我将其更改为:
for (Object key : new ArrayList<Object>(map.keySet()))
if (something)
map.remove(key);
此操作以及任何其他修改映射的过程都在同步块中。
有更好的解决方案吗?
如果没有人提出更好的解决方案,那么首先要说“没有”;)
从Java 8开始,您可以执行以下操作:
map.entrySet().removeIf(e -> <boolean expression>);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句