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

如何在迭代過程中安全地從 ArrayList 中刪除元素?

Linda Hamilton
發布: 2024-12-17 08:25:25
原創
380 人瀏覽過

How to Safely Remove Elements from an ArrayList During Iteration?

在迭代期間從ArrayList 中刪除元素時避免並發修改異常

使用高級for 循環迭代集合時修改集合(for-每時修改集合個循環)都可能導致臭名昭著的ConcurrentModificationException。當在迭代期間嘗試從 ArrayList 中刪除元素時,就會發生這種情況。

原因:

for 循環在內部建立清單的副本並迭代這個副本。當一個元素從原始清單中刪除時,副本的大小會立即減小,從而導致當前元素的索引失效。

解決方案:

要避免此問題,請結合迭代器和remove()方法。

迭代器方法:

迭代器是一個迭代集合元素的物件。它具有像 hasNext 這樣的方法,它檢查是否有更多元素,以及 next,它會傳回下一個元素。使用迭代器可以在迭代期間安全刪除。

Iterator<String> iter = myArrayList.iterator();

while (iter.hasNext()) {
    String str = iter.next();

    if (someCondition)
        iter.remove();
}
登入後複製

在這種方法中,迭代器維護其內部狀態,確保即使在刪除元素後索引仍然有效。 iter.remove() 方法安全地從原始清單中刪除目前元素。

注意: 這種方法比使用帶有索引的傳統 for 迴圈更有效,因為它不需要維護一個單獨的索引變數並在每次刪除後更新它。

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

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