当前位置: 首页 > 知识库问答 >
问题:

使用迭代器循环时向HashMap添加项

郭通
2023-03-14

我有一个使用迭代器循环通过HashMap的程序,在循环中,我将添加到HashMap-这将导致一个并发修改异常。我已经看到ListIterator有一个add()函数来处理这个问题,但是Iterator没有。

HashMap是这样设置的-

HashMap<Pair<Integer, Integer>, Object>

还有像这样的迭代器-

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

对象(不是真实的名字)是一个类从我的程序。有人知道如何在循环或任何其他选项时添加到迭代器吗?

共有1个答案

曹伟泽
2023-03-14

而是循环浏览地图的副本,并添加到原始地图。映射的条目集是映射的键值对的视图,不支持添加,尽管可以删除项。

或者,您可以在迭代时向新映射添加元素,然后在迭代后使用putAll()。。。想想看,这可能更有效。

 类似资料:
  • 我有一个游戏,每隔X秒它就会把内存中改变的值写回我的数据库。当编辑这些值保存的数据时,它们存储在容器(HashMaps和ArrayList)中。 为了简单起见,假设我只有一个容器可以写入数据库: 我的DB写入循环: 我的更新方法: 我是否需要在为dbEntitiesDeletesBacklog HashMap和本摘录中未包含的其他容器“保存到DB”时创建某种锁定机制?我想我需要这样做,因为它会创建

  • 问题内容: 此代码将导致无限循环的机会是什么? 实际上,这会导致无限循环。我的怀疑是因为我没有服用,是真的吗? 问题答案: 是。除非您不打电话,否则它将永远不会继续进行下一项。Beause 将返回您已在列表/集中添加的对象。

  • 迭代器无效是如何处理的,而不是循环? 例如,这段代码不起作用,因为迭代器在插入后无效: 但是,如果我用这个for循环替换while循环,它会正确编译和运行: 为什么for循环有效而while循环无效?

  • 问题内容: 我需要一个2D循环,其中第一个循环使用迭代器,第二个循环使用生成器,但是此简单函数无法正常工作,有人可以帮助检查吗? 不知道为什么?在此先感谢您的帮助。 问题答案: 既然您要澄清一下,我再说一遍。但实际上Ignacio的答案很好地总结了这一点:您只能在一个生成器上进行一次迭代。您示例中的代码尝试对其进行3次迭代,对于中的每个值一次。 要了解我的意思,请考虑以下简单示例: 当被调用时,它

  • 本节我们探索的主题是迭代与循环。循环通常在计算机编程用用于自动执行重复性任务。 在Python中最常用的迭代形式就是for循环了。for循环允许你迭代出列表中所有的项,迭代出来后你可以做任何你想做的事情。 比如,我们创建了一个列表,并打印出其中所有元素的平方。 >>> for value in [0, 1, 2, 3, 4, 5]: ... print(value * value) ... 0 1