微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在地图上进行迭代时,允许对其进行哪些基本操作?

如何解决在地图上进行迭代时,允许对其进行哪些基本操作?

您可以使用Iterator.remove(),如果使用(Map.Entry的)entrySet迭代器,则可以使用Map.Entry.setValue()。其他一切都关闭了- 您不应该直接更改地图,某些地图不允许上述一种或两种方法

具体来说,您的(1),(2)和(3) 允许的。

可能 会通过该Map对象来设置现有键的值,但是Set.iterator()文档明确地排除了这一点,它将针对具体实现:

如果在对集合进行迭代时修改了映射(除非通过迭代器自己的remove操作或通过迭代器返回的映射条目上的setValue操作),则迭代的 。(添加了重点)

解决方法

假设我正在遍历Java中的Map
…我不清楚在遍历该Map的过程中我可以做什么。我猜我在Javadoc中对于Iterator接口remove方法的警告大多感到困惑:

[…]如果在迭代进行过程中以其他方式(而不是通过调用此方法)修改了基础集合,则未指定迭代器的行为。

我知道我可以毫无问题地调用remove方法。但是,在遍历Map集合时,我可以:

  1. 使用Map类put方法更改与键关联的值(使用现有键)?

  2. 使用Map类put方法添加新条目(使用新键)?

  3. 使用Map类的remove方法删除条目?

我的猜测是我可能可以安全地执行#1(放入现有密钥),但不能安全地执行#2或#3。

预先感谢您对此的任何澄清。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。