在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中文網其他相關文章!