首页  >  文章  >  Java  >  如何在迭代时安全地从 Java 映射中删除条目?

如何在迭代时安全地从 Java 映射中删除条目?

Linda Hamilton
Linda Hamilton原创
2024-11-12 19:32:02589浏览

How to Safely Remove Entries from a Java Map While Iterating?

迭代映射并从映射中删除

在 Java 中,迭代映射并在迭代时删除条目可能会抛出 ConcurrentModificationException。为了避免这种异常,一种常见的解决方案是将键集复制到新的数据结构(例如 ArrayList),然后对其进行迭代。

另一种方法是在条目上使用 iterator() 方法地图集。此方法返回的 Iterator 可用于迭代条目,并且其remove() 方法可用于从映射中删除条目。

以下是如何使用此方法的示例:

Map<String, String> map = new HashMap<String, String>() {
  {
    put("test", "test123");
    put("test2", "test456");
  }
};

for (Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); it.hasNext(); ) {
  Map.Entry<String, String> entry = it.next();
  if (entry.getKey().equals("test")) {
    it.remove();
  }
}

这种方法优于将键集复制到新的数据结构,因为它更高效并且不需要创建新对象。

以上是如何在迭代时安全地从 Java 映射中删除条目?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn