迭代并发映射并从中删除
在迭代期间修改映射时,避免 ConcurrentModificationException 错误至关重要。使用 for (Object key : map.keySet()) 的经典方法会失败,因为循环期间可能会发生映射修改。
常见的解决方法是将键集复制到新集合中,如 for 中所示(对象键:new ArrayList
更好的解决方案是使用迭代器来删除映射条目。下面是一个示例:
Map<String, String> map = new HashMap<>(); map.put("test", "test123"); map.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(); } }
此代码使用迭代器安全地从映射中删除条目。迭代器的remove()方法删除当前条目,允许在迭代过程中安全高效地修改地图。
以上是如何在迭代时安全地从并发映射中删除条目?的详细内容。更多信息请关注PHP中文网其他相关文章!