首頁  >  文章  >  Java  >  從 ArrayList 中刪除元素時如何避免 ConcurrentModificationException?

從 ArrayList 中刪除元素時如何避免 ConcurrentModificationException?

Barbara Streisand
Barbara Streisand原創
2024-10-30 20:34:30341瀏覽

How to Avoid ConcurrentModificationException When Removing Elements from an ArrayList?

從ArrayList 遍歷和刪除元素時如何克服ConcurrentModificationException

在並發刪除元素的同時迭代ArrayList 可能會觸發臭名昭著的java. lang.Error 錯誤。 util.ConcurrentModificationException。為了解決這個問題,有幾個最佳實踐需要考慮。

一種方法是建立一個單獨的要刪除的元素清單。在循環迭代期間,將這些元素加入輔助列表中,迭代結束後,呼叫originalList.removeAll(valuesToRemove)方法。

或者,您可以直接在迭代器上使用remove()方法。請注意,此技術要求您避開增強的 for 迴圈。例如,要從清單中消除長度超過 5 的字串:

List<String> list = new ArrayList<String>();

for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
    String value = iterator.next();
    if (value.length() > 5) {
        iterator.remove();
    }
}

以上是從 ArrayList 中刪除元素時如何避免 ConcurrentModificationException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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