-3

この Android ゲームでは、現在画面上にあるすべてのエンティティを追跡するために ArrayList を使用しています。リストを実行すると、エンティティを正常に更新して画面/リストに追加できますが、エンティティを削除しようとすると java.util.ConcurrentModificationException エラーが発生します。私は初心者のプログラマーなので、何がうまくいかないのかよくわかりません。

エンティティをいつ削除する必要があるかを判断するために私が使用している方法 (エンティティが画面外に出たとき、ただし上部からのみ) は次のとおりです。

private void deleteEntities() {
    for(Entity ent : entsOnLevel) {
        if((ent.getY() + ent.getImage().getHeight()) < 0) {
            this.entsOnLevel.remove(ent);
        }
    }
}

誰かが私に何がうまくいかないのか説明してもらえますか?

4

3 に答える 3

3

イテレータを作成し、現在のアイテムを削除しているため、次のアイテムを見つけることができません。

詳細はこちら -> ConcurrentModificationException?

于 2013-08-23T08:39:43.283 に答える
2

Iteratorを使用して List から要素を削除する必要があります。

    Iterator<YourDataType> it = YourList.iterator();
    while (it.hasNext()) 
           it.remove();

これにより、イテレータを使用する理由についてのヒントが得られるはずです。

于 2013-08-23T08:40:29.677 に答える