首頁 > Java > java教程 > 如何在 Java 並發迭代期間安全地從 ArrayList 中刪除元素?

如何在 Java 並發迭代期間安全地從 ArrayList 中刪除元素?

Susan Sarandon
發布: 2024-10-29 10:14:03
原創
907 人瀏覽過

How to Safely Remove Elements from an ArrayList During Concurrent Iteration in Java?

在ArrayList 中並發迭代和刪除期間處理ConcurrentModificationException

在Java 中,在並發修改集合的同時迭代集合可能會導致java .util.concurrentModificationException 異常。 util.ConcurrentModificationException。當集合的結構在迭代過程中因新增或刪除操作而改變時,就會出現此異常。

要在使用ArrayList 時避免此問題,請考慮以下最佳實踐:

  • 建立要刪除的元素清單:

    維護一個單獨的清單來追蹤需要刪除的元素。在循環中,只需將元素新增至此清單中,而不是直接從原始清單中刪除它們。迴圈結束後,使用ArrayList的removeAll()方法從清單中刪除所有元素。

  • 使用Iterator的Remove方法:

    使用迭代器本身可用的remove()方法。請注意,這需要放棄用於迭代列表的 Java 8 增強 for 迴圈語法。

例如,如果您打算從 ArrayList 中刪除長度大於 5 的字串:

<code class="java">List<String> list = new ArrayList<String>();
...
for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
    String value = iterator.next();
    if (value.length() > 5) {
        iterator.remove();
    }
}</code>
登入後複製

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板