在Java中从ArrayList中删除对象
我有这个,每当一颗子弹到达比我的屏幕宽度更大的位置,它就必须被摧毁。当我尝试这个时,游戏崩溃了 “bullet”是我的类,它包含作为对象的i “子弹”是我的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.
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查看在你的问题下作为评论发布的副本。