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

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

DDD
DDD原創
2024-12-21 01:02:13178瀏覽

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

在Java 中迭代期間安全刪除元素

問:是否允許在使用foreach 循環迭代集合時從集合中刪除元素在Java中?

A: 使用 foreach 迴圈進行刪除不是建議。 它可能會導致意外行為,因為底層迭代器未公開且無法直接存取以進行修改。

範例:

List<String> names = ....
for (String name : names) {
   // Do something
   names.remove(name).
}

此程式碼可能會因 java.util 而失敗.ConcurrentModificationException,因為在 foreach 迴圈進行時,刪除操作會修改下面的集合。

問:我們可以刪除尚未刪除的項目嗎?已經被迭代了嗎?

答:否。 刪除循環中尚未處理的元素可能會導致「索引越界」錯誤。範例:

//Assume that the names list as duplicate entries
List<String> names = ....
for (String name : names) {
    // Do something
    while (names.remove(name));
}

要在迭代時安全地刪除元素,應使用迭代器:

List<String> names = ....
Iterator<String> i = names.iterator();
while (i.hasNext()) {
   String s = i.next(); // must be called before you can call i.remove()
   // Do something
   i.remove();
}

Java 文件強調,iterator 和listIterator 方法傳回的迭代器是「fail-快速地。

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

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