在使用 Iterator 循环时将项目添加到 HashMap
Adding items to a HashMap while looping with Iterator
我有一个使用迭代器循环遍历 HashMap 的程序,在循环中,我正在添加到 HashMap - 这导致了 ConcurrentModificationException。我已经看到 ListIterator 有一个 add() 函数来处理这个,但 Iterator 没有。
HashMap是这样设置的 -
HashMap<Pair<Integer, Integer>, Object>
像这样的迭代器 -
Iterator<Entry<Pair<Integer, Integer>, Object>> iter;
对象(不是真名)是我程序中的 class。
有人知道我在循环或任何其他选项时如何添加到迭代器吗?
改为循环遍历地图的副本,然后添加到原始地图。 Map的entry set是Map的键值对的视图,不支持添加,但可以删除。
或者,您可以在迭代时向新地图添加元素,然后在之后使用 putAll()
...想想看,这可能更有效。
我有一个使用迭代器循环遍历 HashMap 的程序,在循环中,我正在添加到 HashMap - 这导致了 ConcurrentModificationException。我已经看到 ListIterator 有一个 add() 函数来处理这个,但 Iterator 没有。
HashMap是这样设置的 -
HashMap<Pair<Integer, Integer>, Object>
像这样的迭代器 -
Iterator<Entry<Pair<Integer, Integer>, Object>> iter;
对象(不是真名)是我程序中的 class。 有人知道我在循环或任何其他选项时如何添加到迭代器吗?
改为循环遍历地图的副本,然后添加到原始地图。 Map的entry set是Map的键值对的视图,不支持添加,但可以删除。
或者,您可以在迭代时向新地图添加元素,然后在之后使用 putAll()
...想想看,这可能更有效。