【问题标题】:Adding items to a HashMap while looping with Iterator使用迭代器循环时将项目添加到 HashMap
【发布时间】:2015-05-02 03:33:50
【问题描述】:

我有一个使用迭代器循环遍历 HashMap 的程序,在循环内部,我正在添加到 HashMap - 这会导致 ConcurrentModificationException。我已经看到 ListIterator 有一个 add() 函数来处理这个问题,但 Iterator 没有。

HashMap是这样设置的——

HashMap<Pair<Integer, Integer>, Object>

还有像这样的迭代器 -

Iterator<Entry<Pair<Integer, Integer>, Object>> iter;

Object(不是真名)是我程序中的一个类。 有谁知道我在循环或任何其他选项时如何添加到迭代器?

【问题讨论】:

  • 为什么不将对象添加到列表中,并在迭代结束后将它们添加到地图中?

标签: java iterator hashmap listiterator


【解决方案1】:

改为循环遍历地图副本,然后添加到原始地图。 map 的 entry set 是 Map 的键值对的视图,不支持添加,但可以删除项。

或者,您可以在迭代时将元素添加到新地图,然后使用putAll()...想想看,这可能更有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 2014-10-31
    相关资源
    最近更新 更多