迭代並發映射並從中刪除
在迭代期間修改映射時,避免 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中文網其他相關文章!