解決方法: Java コレクション エラー: コレクション トラバーサル例外
はじめに:
Java 開発では、コレクションは、オブジェクトを保存および操作するために非常に一般的に使用されるデータ構造です。データのセット。ただし、トラバーサル操作にコレクションを使用する場合、コレクション トラバーサル例外が頻繁に発生します。この記事では、この問題の原因と解決策について説明し、対応するコード例を示します。
1. コレクション走査例外の理由:
反復子または for-each ループを使用してコレクションを走査する場合、走査プロセス中にコレクションが変更されると (要素の追加または削除など)、 ConcurrentModificationException がスローされます。これは、走査プロセス中に、反復子または for-each ループがコレクションの構造が変更されたかどうかを検出するカウンターを維持し、変更が見つかると例外をスローするためです。
2. 解決策:
List<String> list = new ArrayList<>(); // 添加元素 list.add("A"); list.add("B"); list.add("C"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String item = iterator.next(); if (item.equals("B")) { iterator.remove(); // 删除元素 } }
List<String> list = new ArrayList<>(); // 添加元素 list.add("A"); list.add("B"); list.add("C"); for (int i = list.size() - 1; i >= 0; i--) { String item = list.get(i); if (item.equals("B")) { list.remove(i); // 删除元素 } }
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>(); // 添加元素 map.put("A", 1); map.put("B", 2); map.put("C", 3); for (Map.Entry<String, Integer> entry : map.entrySet()) { if (entry.getValue() == 2) { map.remove(entry.getKey()); // 删除元素 } }
結論:
コレクション トラバーサル例外は、トラバーサル プロセス中のコレクションへの変更によって発生します。この問題を解決するには、Iterator を使用してコレクションを走査し、remove() メソッドを使用するか、通常の for ループを使用してコレクションを走査し、List の Remove() メソッドを使用するか、同時コレクション クラスを使用します。適切なソリューションを選択すると、コレクション トラバーサル例外の問題を効果的に回避し、プログラムの通常の動作を保証できます。
総単語数: 437 単語
以上が修正方法: Java コレクション エラー: コレクション トラバーサル例外の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。