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

在 Java 中迭代時如何安全地從集合中刪除元素?

Patricia Arquette
發布: 2024-12-13 09:10:19
原創
885 人瀏覽過

How to Safely Remove Elements from a Collection While Iterating in Java?

迭代時從集合中刪除元素

使用集合時,有必要在迭代時修改或刪除元素。但是,在迭代期間修改集合可能會導致 ConcurrentModificationException。為了避免這種情況,有幾種方法:

迭代集合的副本

一種方法是在迭代之前建立集合的副本。這允許您修改副本而不影響原始集合。以下是一個範例:

List<Foo> fooListCopy = new ArrayList<>(fooList);
for (Foo foo : fooListCopy) {
    // Modify actual fooList
}
登入後複製

使用實際集合的迭代器

另一種方法是使用實際集合的迭代器。這種方法允許您在迭代期間修改集合。以下是一個範例:

Iterator<Foo> itr = fooList.iterator();
while (itr.hasNext()) {
    // Modify actual fooList using itr.remove()
}
登入後複製

選擇方法的注意事項

在這些方法之間進行選擇取決於幾個因素:

  • 集合類型:第一種方法適用於任何集合,而第二種方法僅適用於適用於支援迭代器的集合(例如列表、集合)。
  • 可讀性:第一種方法可能更容易閱讀和理解,特別是對於初學者而言。
  • 效能:第二種方法更有效率,因為它不需要建立collection.
  • 不支援的刪除操作: Iterator.remove( ) 方法是可選的,因此並非所有迭代器都支援刪除元素。第一種方法透過使用 Collection.removeAll() 方法來避免此問題。

刪除元素的其他技術

除了這些方法之外,Java 8提供了幾種在迭代期間刪除元素的其他技術,包括:

  • 基於流的刪除:使用流操作,如removeIf()或filter()與collect( )。
  • ListIterator: 使用ListIterator.next() 迭代,使用ListIterator.remove() 進行刪除
  • 子列表或子集:
子列表或子集:集合已排序,建立子清單或子集並清除它可以有效地刪除連續元素。

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

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