Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(Unknown Source)
at java.util.HashMap$HashIterator.nextNode(Unknown Source)
at java.util.HashMap$KeyIterator.next(Unknown Source)
java中的for-each遍历与迭代器遍历是十分便捷的工具。但在初次使用中非常容易犯下一边遍历某一集合,一边添加或减少集合中的元素的错误。
例如:
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
for(String string : set)
{
set.add(string+" ");
}
我们尝试一边遍历集合,一边向集合中添加元素。这就会导致上述报错信息。
使用迭代器完成的循环与for-each同理。如果在循环中增删也会遇到同样的报错信息。
我们十分容易找到替代方案,只要在遍历过程结束后再进行对集合的增删即可。