ホームページ  >  記事  >  Java  >  ArrayList から要素を削除するときに ConcurrentModificationException を回避するにはどうすればよいですか?

ArrayList から要素を削除するときに ConcurrentModificationException を回避するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 20:34:30260ブラウズ

How to Avoid ConcurrentModificationException When Removing Elements from an ArrayList?

ArrayList の要素を走査して削除するときに ConcurrentModificationException を克服する方法

要素を同時に削除しながら ArrayList を反復処理すると、悪名高い Java がトリガーされる可能性があります。 util.ConcurrentModificationException。この問題に対処するには、考慮すべきベスト プラクティスがいくつかあります。

1 つの方法は、削除する要素の別のリストを作成することです。ループの反復中に、これらの要素をセカンダリ リストに追加し、反復が終了したら、originalList.removeAll(valuesToRemove) メソッドを呼び出します。

あるいは、反復子で直接 Remove() メソッドを利用することもできます。この手法では、拡張された for ループを回避する必要があることに注意してください。たとえば、長さが 5 を超える文字列をリストから削除するには:

List<String> list = new ArrayList<String>();

for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
    String value = iterator.next();
    if (value.length() > 5) {
        iterator.remove();
    }
}

以上がArrayList から要素を削除するときに ConcurrentModificationException を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。