在 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中文网其他相关文章!