首頁  >  文章  >  Java  >  迭代時如何安全地從 HashMap 刪除元素?

迭代時如何安全地從 HashMap 刪除元素?

DDD
DDD原創
2024-11-17 08:11:03815瀏覽

How to Safely Remove Elements from a HashMap while Iterating?

迭代和刪除時發生並發修改異常

在進行並發修改(例如刪除元素)時迭代HashMap 時,可能會出現ConcurrentModationExceptionModationException發生。這是因為迭代器對映射的內部引用因修改而失效。

使用ArrayList 的初始解決方案

避免此異常的一種常見方法是建立副本使用new ArrayList(map.keySet()) 取得地圖的鍵集。但是,這種方法會建立不必要的鍵副本,效率可能會很低。

使用迭代器進行刪除

更有效的解決方案是迭代映射的條目使用迭代器,它允許我們安全地刪除元素。映射的entrySet()方法傳回一組條目,每個條目都有一個getKey()和getValue()方法。

範例程式碼:

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();
    }
}

在此範例中,我們迭代地圖的條目並安全地刪除「test」鍵。迭代器處理對映射內部結構的必要修改,防止 ConcurrentModificationException。

以上是迭代時如何安全地從 HashMap 刪除元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn