ホームページ >Java >&#&チュートリアル >Java 反復例外 (IterationException) を解決するソリューション

Java 反復例外 (IterationException) を解決するソリューション

WBOY
WBOYオリジナル
2023-08-17 20:34:451542ブラウズ

Java 反復例外 (IterationException) を解決するソリューション

Java 反復例外 (IterationException) を解決する解決策

Java でプログラミングをしていると、反復例外 (IterationException) の問題によく遭遇します。この例外は通常、イテレータまたは拡張 for ループを使用してコレクションまたは配列を走査するときに発生します。

反復例外の理由は、通常、反復プロセス中のコレクションまたは配列の変更によるものです。これにより、反復中に無効なインデックスまたはポインタが発生し、例外がスローされる可能性があります。この問題を解決するには、次のような方法が考えられます。

  1. 拡張された for ループの代わりに通常の for ループを使用する
    拡張された for ループは、コレクションまたは配列の走査を簡素化する構文糖です。コードの記述はより簡潔になりますが、反復中にコレクションまたは配列を変更する必要がある場合は、通常の for ループを使用することをお勧めします。これは、通常の for ループでは、反復例外を回避するためにインデックスを手動で制御できるためです。

以下は、通常の for ループを使用して反復例外を解決するサンプル コードです。

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);

for (int i = 0; i < list.size(); i++) {
    if (list.get(i) == 2) {
        list.remove(i);
    }
}

System.out.println(list); // 输出 [1, 3]
  1. イテレーターの Remove() メソッドを使用します。
    イテレーターはコレクションを走査するための特別なオブジェクトに使用されるメソッド。反復中の要素の削除など、コレクションを操作するための一連のメソッドが提供されます。イテレータのremove()メソッドを使用すると、反復プロセス中にコレクション内の要素を安全に削除し、反復例外の発生を回避できます。

以下は、イテレータの Remove() メソッドを使用して反復例外を解決するサンプル コードです。

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);

Iterator<Integer> iterator = list.iterator();
while(iterator.hasNext()) {
    int num = iterator.next();
    if(num == 2) {
        iterator.remove();
    }
}

System.out.println(list); // 输出 [1, 3]
  1. 同時コレクションを使用する (Concurrent Collection)
    マルチスレッド環境での反復操作が必要な場合は、同時収集を使用することをお勧めします。同時コレクションはスレッドセーフであり、反復例外を回避するために複数のスレッドで同時に読み取りおよび書き込み操作を実行できます。

以下は、同時コレクションを使用して反復例外を解決するためのサンプル コードです:

ConcurrentList<Integer> list = new ConcurrentList<>();
list.add(1);
list.add(2);
list.add(3);

for (Integer num : list) {
    if (num == 2) {
        list.remove(num);
    }
}

System.out.println(list); // 输出 [1, 3]

概要:
Java プログラミングでは、反復例外は一般的な問題です。この問題を解決するには、拡張された for ループの代わりに通常の for ループを使用するか、イテレータの Remove() メソッドを使用するか、同時コレクションを使用します。これらの方法は、反復例外の発生を回避し、プログラムを正しく実行するのに役立ちます。

どの方法を使用する場合でも、反復プロセス中の例外を避けるために、反復プロセス中にコレクションまたは配列を変更しないように注意する必要があります。合理的なコーディング標準と慎重なコードレビューも、反復異常を回避するための重要な手段です。

以上がJava 反復例外 (IterationException) を解決するソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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