毕业之后,继续走了一年了的弯路,这是一段必不可少的经历,我走弯路的原因是思想不成熟,时间的浪费有助于消除我的无知,从这个意义上说,这弯路不算弯,但毕竟浪费了一年的光阴。
先前写的list先判断条件,如果符合条件就加到list中,没有遇到过困难。
这几天看一些多线程的小游戏,比如很多对象开始已经存在于list中,一段时间之后他们就不符合条件了,就需要把他们从list中清除出去,
1.写的时候就写了如下代码:
for(Item temp:list) { if(temp.isDead){ list.remove(temp);}}
结果报了一个错误,遍历过程中不能增减列表list
2.换一种写法呗
for(int i=0;i<list.size();i++){ Item temp=list.get(i); if(temp.isDead) list.remove(temp);}
回头一想不对,list的长度是不断变化的,这样写了逻辑有问题。
3最后想来想去,写了一个简单算法解决了这个问题
int cur=0;
while(cur<list.size()){
Item temp=list.get(cur);
if(temp.isDead){
list.remove(temp);
}
else{
cur++;
}
}
问题终于解决。O(∩_∩)O~