我正在尝试从迭代ArrayList中删除一个对象但是不能从循环内部执行此操作,这是我目前所拥有的
for(Pearl pearl : this.pearls){
pearl.onDraw(canvas);
if(fish.isCollide(pearl)){
this.pearls.remove(pearl);
}
}
如果ArrayList大于1,则上述代码不起作用。
我正在考虑将代码更改为以下内容,但更愿意知道是否有更简单的方法。
List<Pearl> pearls_delete = new ArrayList<Pearl>();
for(Pearl pearl : this.pearls){
pearl.onDraw(canvas);
if(fish.isCollide(pearl)){
pearls_delete.add(pearl);
}
}
this.pearls.removeAll(pearls_delete);
答案 0 :(得分:9)
使用Iterator
Iterator<Pearl> iter = this.pearls.iterator();
while ( iter.hasNext() ) {
Pearl pearl = iter.next();
// logic
iter.remove();
}
或只是
for (Iterator<Pearl> iter = pearls.iterator(); iter.hasNext();) {
Pearl pearl = iter.next();
// logic
iter.remove();
}