一个简单的算法关于list

本文分享了作者在多线程游戏开发中遇到的问题及解决方案,详细介绍了如何正确地从列表中移除不再符合特定条件的对象,避免运行时错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         毕业之后,继续走了一年了的弯路,这是一段必不可少的经历,我走弯路的原因是思想不成熟,时间的浪费有助于消除我的无知,从这个意义上说,这弯路不算弯,但毕竟浪费了一年的光阴。

       先前写的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~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大巨魔战将

如果对您有帮助,请打赏1分钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值