java.util.ConcurrentModificationExceptionが発生するのはなぜですか?

スハイルグプタ

次のコードを実行すると:

    import java.util.LinkedList;

    class Tester {
      public static void main(String args[]) {
        LinkedList<String> list = new LinkedList<String>();
        list.add(new String("suhail"));
        list.add(new String("gupta"));
        list.add(new String("ghazal"));
        list.add(new String("poetry"));
        list.add(new String("music"));
        list.add(new String("art"));

        try {
            for(String s : list) {
            list.add(0,"art");
            list.remove(6);
            System.out.println(list);
        }
        }catch(Exception exc) {
            exc.printStackTrace();
        }

    }
}

私は言う例外を受け取ります:

java.util.ConcurrentModificationException
    at java.util.LinkedList$ListItr.checkForComodification(Unknown Source)
    at java.util.LinkedList$ListItr.next(Unknown Source)
    at Tester.main(Tester.java:14)

なぜこの例外が発生するのですか?

編集:tmpListは、各ノードにタイプDepConfAttrのオブジェクトが含まれるLinkedListです。DepConfAttrのオブジェクトの属性の1つであるメモリ(最も高いメモリが最初)に基づいてtmpListをソートしています。

上記のコードは、私が次のコードを通じて達成しようとしていることを反映しています

int size = tmpList.size();
        int elementBC = 0; // element being checked
        int startIndex = 1;
        for (DepConfAttr dca : tmpList) {
            long maxMem = dca.getMemory(); // Let this be the maximum memory
            for(int i = startIndex ; i < size ; i++) {
                DepConfAttr dcaTmp = tmpList.get(i);
                if(maxMem < dcaTmp.getMemory()) {
                    tmpList.add(elementBC, dcaTmp);
                    tmpList.remove(i+1);
                    maxMem = tmpList.get(elementBC).getMemory();                        
                }
            }
            elementBC++;
            startIndex++;
            size--;
        }
ジョンスキート

なぜこの例外が発生するのですか?

アイテムを繰り返し処理しているときに、イテレーター以外の方法でリストからアイテムを削除しています。また、リストを繰り返し処理しているときに、リストに追加します。

ここで何を達成しようとしているのかは明確ではありませんが、並行コレクションを使用する場合を除いて、これを実行しようとすると常に例外が発生します。

これに対する一般的な修正の1つは、最初にリストのコピーを作成し、それを繰り返して、元のリストを変更することです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JavaでStackを使用してjava.util.ConcurrentModificationExceptionが発生するのはなぜですか?

分類Dev

java.util.InputMismatchExceptionの問題が発生するのはなぜですか?

分類Dev

it.next()がjava.util.ConcurrentModificationExceptionをスローするのはなぜですか?

分類Dev

スレッド「メイン」のjava.util.NoSuchElementExceptionで例外が発生するのはなぜですか?

分類Dev

java.util.ConcurrentModificationExceptionが発生します

分類Dev

スキャナーを使おうとすると、なぜjava.util.NoSuchElementExceptionが発生するのですか?

分類Dev

なぜこの「スレッド「メイン」java.util.InputMismatchExceptionの例外」が発生するのですか?

分類Dev

この例でjava.util.ConcurrentModificationExceptionが返されないのはなぜですか?

分類Dev

一致しないすべての要素をマップから削除すると、java.util.ConcurrentModificationExceptionが発生します

分類Dev

Java:java.util.Collections.list(Enumeration)が破壊的であるのはなぜですか?

分類Dev

java.util.logging.Loggerがstderrに出力するのはなぜですか?

分類Dev

java.util.Randomがマスクを使用するのはなぜですか?

分類Dev

APIにjava.utilのセットがあるのはなぜですか?

分類Dev

java.util.Arrays内にArrayList宣言があるのはなぜですか

分類Dev

java.util.Collectionにメソッドiterator()があるのはなぜですか

分類Dev

java.util.Observableが抽象クラスではないのはなぜですか?

分類Dev

JavaでNoClassDefFoundErrorが発生するのはなぜですか?

分類Dev

JavaでNoClassDefFoundErrorが発生するのはなぜですか?

分類Dev

JavaでnullPointerExceptionが発生するのはなぜですか?

分類Dev

JAVA java.util.ConcurrentModificationException

分類Dev

Java:Stream + Iteratorの使用中にConcurrentModificationExceptionが発生しないのはなぜですか?

分類Dev

Java:Stream + Iteratorの使用中にConcurrentModificationExceptionが発生しないのはなぜですか?

分類Dev

java.lang.NullPointerExceptionが発生するのはなぜですか?

分類Dev

java.lang.UnsupportedOperationExceptionが発生するのはなぜですか?

分類Dev

java.lang.NullPointerExceptionが発生するのはなぜですか

分類Dev

java.util.concurrent.TimeUnit.convertが抽象ではなくAbstractMethodErrorをスローするのはなぜですか

分類Dev

java.util.concurrent.TimeUnit.convertが抽象ではなくAbstractMethodErrorをスローするのはなぜですか

分類Dev

java.util.PropertiesがHashtable <String、String>ではなくHashtable <Object、Object>を拡張するのはなぜですか?

分類Dev

<ui:repeat>がjava.util.Iteratorで機能しないのはなぜですか?

Related 関連記事

  1. 1

    JavaでStackを使用してjava.util.ConcurrentModificationExceptionが発生するのはなぜですか?

  2. 2

    java.util.InputMismatchExceptionの問題が発生するのはなぜですか?

  3. 3

    it.next()がjava.util.ConcurrentModificationExceptionをスローするのはなぜですか?

  4. 4

    スレッド「メイン」のjava.util.NoSuchElementExceptionで例外が発生するのはなぜですか?

  5. 5

    java.util.ConcurrentModificationExceptionが発生します

  6. 6

    スキャナーを使おうとすると、なぜjava.util.NoSuchElementExceptionが発生するのですか?

  7. 7

    なぜこの「スレッド「メイン」java.util.InputMismatchExceptionの例外」が発生するのですか?

  8. 8

    この例でjava.util.ConcurrentModificationExceptionが返されないのはなぜですか?

  9. 9

    一致しないすべての要素をマップから削除すると、java.util.ConcurrentModificationExceptionが発生します

  10. 10

    Java:java.util.Collections.list(Enumeration)が破壊的であるのはなぜですか?

  11. 11

    java.util.logging.Loggerがstderrに出力するのはなぜですか?

  12. 12

    java.util.Randomがマスクを使用するのはなぜですか?

  13. 13

    APIにjava.utilのセットがあるのはなぜですか?

  14. 14

    java.util.Arrays内にArrayList宣言があるのはなぜですか

  15. 15

    java.util.Collectionにメソッドiterator()があるのはなぜですか

  16. 16

    java.util.Observableが抽象クラスではないのはなぜですか?

  17. 17

    JavaでNoClassDefFoundErrorが発生するのはなぜですか?

  18. 18

    JavaでNoClassDefFoundErrorが発生するのはなぜですか?

  19. 19

    JavaでnullPointerExceptionが発生するのはなぜですか?

  20. 20

    JAVA java.util.ConcurrentModificationException

  21. 21

    Java:Stream + Iteratorの使用中にConcurrentModificationExceptionが発生しないのはなぜですか?

  22. 22

    Java:Stream + Iteratorの使用中にConcurrentModificationExceptionが発生しないのはなぜですか?

  23. 23

    java.lang.NullPointerExceptionが発生するのはなぜですか?

  24. 24

    java.lang.UnsupportedOperationExceptionが発生するのはなぜですか?

  25. 25

    java.lang.NullPointerExceptionが発生するのはなぜですか

  26. 26

    java.util.concurrent.TimeUnit.convertが抽象ではなくAbstractMethodErrorをスローするのはなぜですか

  27. 27

    java.util.concurrent.TimeUnit.convertが抽象ではなくAbstractMethodErrorをスローするのはなぜですか

  28. 28

    java.util.PropertiesがHashtable <String、String>ではなくHashtable <Object、Object>を拡張するのはなぜですか?

  29. 29

    <ui:repeat>がjava.util.Iteratorで機能しないのはなぜですか?

ホットタグ

アーカイブ