mk_*_*_89 3 java arrays arraylist
我正在尝试从迭代的ArrayList中删除一个对象但是不能从循环内部执行此操作,这是我目前所拥有的
for(Pearl pearl : this.pearls){
pearl.onDraw(canvas);
if(fish.isCollide(pearl)){
this.pearls.remove(pearl);
}
}
Run Code Online (Sandbox Code Playgroud)
如果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);
Run Code Online (Sandbox Code Playgroud)
用一个 Iterator
Iterator<Pearl> iter = this.pearls.iterator();
while ( iter.hasNext() ) {
Pearl pearl = iter.next();
// logic
iter.remove();
}
Run Code Online (Sandbox Code Playgroud)
或者干脆
for (Iterator<Pearl> iter = pearls.iterator(); iter.hasNext();) {
Pearl pearl = iter.next();
// logic
iter.remove();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |