1

コードのこの部分でエラーが発生する理由はわかりませんが、リストからアイテムを削除し、同時にそれを反復処理すると、この例外が発生することはわかっています。同期化は別のアイデアになると読みましたが、それが常に正しいアプローチであるとは限りません。LogCatwhile (sw.hasNext())は行の ConcurrentModificationException を示します。私のコードの他の部分はリストにまったく影響を与えないことに注意してください。

Iterator<Weapons> sw = Selected_Weapons.iterator();
                while (sw.hasNext()) {
                    Weapons www = sw.next();
                        if (www.getY()<648){

                            Iterator<Container> cit2 = Containers.iterator();
                            while (cit2.hasNext()) {
                                Container c = cit2.next();

                                if (c.getWeaponID()==www.id){
                                    c.setWeaponID(-1);
                                    c.setIsEmpty(true);
                                    Selected_Weapons.remove(www);
                                }
                            }
                        }
                }

どうすればこれを解決できますか?

4

2 に答える 2

4

反復中に Selected_Weapons コレクションを変更しています。問題のある行は実際には次のとおりです。

Selected_Weapons.remove(www);

この場合、コレクションを反復処理し、すべてのアイテムを反復処理した後、削除したいものを追跡するだけでよいでしょう。

于 2012-10-09T00:19:36.473 に答える
0

ConcurrentLinkedListを使用するのはどうですか?

于 2012-10-09T01:53:46.767 に答える