ホームページ > Java > &#&チュートリアル > 反復中に ArrayList から要素を安全に削除するにはどうすればよいですか?

反復中に ArrayList から要素を安全に削除するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-17 08:25:25
オリジナル
418 人が閲覧しました

How to Safely Remove Elements from an ArrayList During Iteration?

反復中に ArrayList から要素を削除する際の同時変更例外の回避

高度な for ループ (for-各ループ)、悪名高い ConcurrentModificationException が発生する可能性があります。これは、反復中に ArrayList から要素を削除しようとすると発生します。

原因:

for ループはリストのコピーを内部的に作成し、反復処理します。このコピー。元のリストから要素が削除されると、コピーのサイズがすぐに縮小され、その結果、現在の要素のインデックスが無効になります。

解決策:

この問題を回避するには、remove() メソッドとともにイテレータを使用します。

Iteratorアプローチ:

イテレーターは、コレクションの要素を反復処理するオブジェクトです。さらに要素があるかどうかを確認する hasNext や、次の要素を返す next などのメソッドがあります。イテレータを使用すると、反復中に安全に削除できます。

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

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

    if (someCondition)
        iter.remove();
}
ログイン後にコピー

このアプローチでは、イテレータは内部状態を維持し、要素が削除された後でもインデックスが有効なままであることを保証します。 iter.remove() メソッドは、元のリストから現在の要素を安全に削除します。

注: このアプローチは、インデックスを必要としないため、従来の for ループを使用するよりも効率的です。個別のインデックス変数を維持し、削除するたびに更新します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート