Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中从ArrayList中删除对象_Java_For Loop_Arraylist_Foreach - Fatal编程技术网

在Java中从ArrayList中删除对象

在Java中从ArrayList中删除对象,java,for-loop,arraylist,foreach,Java,For Loop,Arraylist,Foreach,我有这个,每当一颗子弹到达比我的屏幕宽度更大的位置,它就必须被摧毁。当我尝试这个时,游戏崩溃了 “bullet”是我的类,它包含作为对象的i “子弹”是我的arraylist,包含所有对象 编辑:现在尝试使用迭代器,但仍然崩溃 编辑:接受的答案帮助了我。现在工作。谢谢 public ArrayList<bullet> bullets = new ArrayList<bullet>(); public Iterator<bullet> it = bullets.

我有这个,每当一颗子弹到达比我的屏幕宽度更大的位置,它就必须被摧毁。当我尝试这个时,游戏崩溃了

“bullet”是我的类,它包含作为对象的i

“子弹”是我的arraylist,包含所有对象

编辑:现在尝试使用迭代器,但仍然崩溃

编辑:接受的答案帮助了我。现在工作。谢谢

public ArrayList<bullet> bullets = new ArrayList<bullet>();
public Iterator<bullet> it = bullets.iterator();

while (it.hasNext()) {
           bullet s = it.next();
           if(s.xPosition > screenWidth - 10) {
               it.remove();
           }
        }
publicArrayList项目符号=newArrayList();
公共迭代器it=bullets.Iterator();
while(it.hasNext()){
bullet s=it.next();
如果(s.xPosition>屏幕宽度-10){
it.remove();
}
}

迭代列表时,无法从列表中删除元素。如果您这样做,您将获得
ConcurrentModificationException
。 您应该使用迭代器并从迭代器中删除元素

Iterator<Bullet> itr = bullets.iterator();
while(itr.hasNext()) {
    if(itr.next().xPosition > screenWidth - 10) {
        itr.remove(i);
    }
}
Iterator itr=bullets.Iterator();
while(itr.hasNext()){
if(itr.next().xPosition>screenWidth-10){
itr.移除(i);
}
}

可能重复您所说的崩溃是什么意思?你有NullPointerException吗?你能更明确地说明你的错误吗?好吧,这很酷,但这对我没有多大帮助,因为我不知道如何做出这些错误中的一个。@KevinJensenPetersen查看在你的问题下作为评论发布的副本。