簡體   English   中英

在迭代HashMap的值時刪除它安全嗎?

[英]Is it safe to delete HashMap's entry when iterating over its values?

假設我知道密鑰,可以在迭代時將其刪除

for (ExampleClass e : map.values()) {
    if (condition) {
        map.remove(key);
    }
}

我發現了一個相關的問題( 遍歷和從地圖中刪除 ),但是它假定我們正在遍歷鍵集。 設定值是否相同?

HashMap javadoc中

由此類的所有“集合視圖方法”返回的迭代器都是快速失敗的:如果在創建迭代器后的任何時候以任何方式對映射進行結構修改,則除了通過迭代器自己的remove方法之外,迭代器都會拋出ConcurrentModificationException

因此,您不能使用map.remove(key)

從javadoc中獲取HashMap#values()

集合支持元素刪除,該元素通過Iterator.remove,Collection.remove,removeAll,retainAll和clear操作從映射中刪除相應的映射。

因此,您可以使用Iterator#remove()從值集中刪除條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM