【发布时间】:2016-04-15 12:56:07
【问题描述】:
我正在尝试迭代两个 ArrayList:其中一个叫做“gegner”是关于敌人的列表,另一个叫做“waende”是关于墙壁的。
每当一堵墙和一个敌人接触时,两者都应该失去一个耐久度/生命值。 由于它不能同时工作,我创建了一个新方法,应该从列表中删除死亡对象。
我的想法是:
public void removeDeathObjects() {
Wand tempW;
Gegner tempG;
for (Iterator<Gegner> it = gegner.iterator(); it.hasNext();) {
tempG = it.next();
for (Iterator<Wand> it2 = waende.iterator(); it2.hasNext();) {
tempW = it2.next();
if(tempW.isDestroyed()){
it2.remove();
}
if (tempG.isDeath()){
it.remove();
}
}
}
}
但是只要至少有两堵墙,程序就会在it.remove()java.lang.IllegalStateException 行中抛出“线程“AWT-EventQueue-0”中的异常,并且敌人没有被完全杀死。
我在哪里失败了?
如果你愿意,我可以给你完整的代码,但它很长._.
PS: 抱歉英语不好
【问题讨论】:
-
我不明白为什么你的两个循环是嵌套的。你不只是想要
gegner.removeIf(g -> g.isDeath())之类的东西吗?
标签: java arraylist multidimensional-array iterator