gpt4 book ai didi

java - 删除ArrayList中的对象本身

转载 作者:行者123 更新时间:2023-12-02 02:26:15 24 4
gpt4 key购买 nike

我正在处理单线程游戏,在主类中我有 ArrayList 来包含用于攻击僵尸的 Bullet 对象。游戏的每一帧我都会循环:

ArrayList<Bullet> bulletList;
for (Bullet iBullet : bulletList) {
iBullet.move();
iBullet.attack(bulletList);
}

在子弹课上,我写道

public void attack(ArrayList<Bullet> bulletList) {
for (Zombies z : zombieList) {
if ( hit condition ) {
bulletList.remove(this); //problem here
return;
}
}
}

第一次循环后出现空错误,似乎子弹对象已成功从 ArrayList 中删除,并且在主类的循环中也造成了一些困惑。

最佳答案

您可以使用Iterator ,更改您的 attack 方法以接受它作为参数:

Iterator<Bullet> iterator = bulletList.iterator();
while (iterator.hasNext()) {
Bullet iBullet = iterator.next();
iBullet.move();
iBullet.attack(bulletList, iterator);
}

public void attack(ArrayList<Bullet> bulletList, Iterator<Bullet> iterator) {
iterator.remove();
}

或者您可以更改您的 attack 方法以返回一个 boolean 值,指示子弹是否击中(而不是移除子弹),并使用 removeIf() Java 8中引入的方法:

for (Bullet iBullet : bulletList) {
iBullet.move();
}
bulletList.removeIf(b -> b.attack());

关于java - 删除ArrayList中的对象本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47736154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com