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

シーカー

スタックでイテレータを使用しているにもかかわらず、同時変更の例外が発生します

package samplecodes;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

public class ReOrderStack {






    public static Stack<Integer> reorder(Stack<Integer> s )
    {
        Queue <Integer> q= new LinkedList<Integer>();

        if(s==null|| s.isEmpty())
            return s;
        // Use an iterator to prevent concurrent modification exception!

        Iterator<Integer> it = s.iterator();
        while(it.hasNext())
        {
            Integer val= it.next();// concurrent modification exception!
            if(val>=0)
            {
                s.remove(val);
                q.add(val);
            }
        }

    //we've inspected the stack

    //add back from the queue to stack
    while(!q.isEmpty())
    {
        Integer val=q.remove();

        s.push(val);
    }
        return s;

    }
}

なぜ何か考えはありますか?

マスドゥル

Stack.remove安全ではありません。で発生ConcurrentModificationExceptionIteratorます。ConcurrentModificationException使用を避けるためIterator.remove()試してみてください

Iterator<Integer> it = s.iterator();
    while(it.hasNext())
    {
        Integer val= it.next();          
        if(val>=0)
        {
            it.remove(); //Use Iterator.remove
            //s.remove(val);
            q.add(val);
        }
    }

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

java.util.ConcurrentModificationExceptionが発生します

分類Dev

putAllを使用してConcurrentModificationExceptionが発生するのはなぜですか?

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

java.util.loggingを使用しないのはなぜですか?

分類Dev

このunmodizableSetでConcurrentModificationExceptionが発生するのはなぜですか?

分類Dev

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

分類Dev

Java.Util.Stackがループの最後の要素をポップしないのはなぜですか?

分類Dev

Java11がjava.util.zip.ZipFile $ Sourceをヒープ上に保持しているのはなぜですか?

分類Dev

Jdbcでjava.util.Dateを使用しないのはなぜですか?

分類Dev

java.util.ListがSerializableを実装しないのはなぜですか?

分類Dev

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

分類Dev

イテレータを使用しても配列リストから要素を削除すると、java.util.ConcurrentModificationExceptionが発生します

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

java.util.Calendarが最小のWEEK_OF_MONTH値をゼロとして返すのはなぜですか?

分類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

java.util.DateがYearを「year-1900」として表すのはなぜですか?

Related 関連記事

  1. 1

    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

    putAllを使用してConcurrentModificationExceptionが発生するのはなぜですか?

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

    java.util.loggingを使用しないのはなぜですか?

  12. 12

    このunmodizableSetでConcurrentModificationExceptionが発生するのはなぜですか?

  13. 13

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

  14. 14

    Java.Util.Stackがループの最後の要素をポップしないのはなぜですか?

  15. 15

    Java11がjava.util.zip.ZipFile $ Sourceをヒープ上に保持しているのはなぜですか?

  16. 16

    Jdbcでjava.util.Dateを使用しないのはなぜですか?

  17. 17

    java.util.ListがSerializableを実装しないのはなぜですか?

  18. 18

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

  19. 19

    イテレータを使用しても配列リストから要素を削除すると、java.util.ConcurrentModificationExceptionが発生します

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

    java.util.Calendarが最小のWEEK_OF_MONTH値をゼロとして返すのはなぜですか?

  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

    java.util.DateがYearを「year-1900」として表すのはなぜですか?

ホットタグ

アーカイブ