我有一个数组列表“项目”,其中包含来自超类的项目以及来自其子类的项目。
for (Item item : items)
{
if (item.getLocation() == location)
{
System.out.println(item.getDescription() + " is in this location");
if (item instanceof Monster)
{
Monster monster = (Monster)item;
if (monster.hasDied())
{
System.out.println(monster.getDescription() + " has been defeated!");
items.remove(monster);
}
}
}
}
如果发现怪物已经死亡,我正在尝试从数组列表中删除怪物。所有方法都有效,我知道您不能在如上所示的 foreach 循环中从数组列表中删除项目。我以前使用下面的代码从数组列表中删除怪物,但是这是当有一个单独的“项目”和“怪物”数组列表时。它们现在都在同一个“项目”数组列表中,因为“怪物”类是“项目”类的子类。
Iterator<Monster> iter = monsters.iterator();
while (iter.hasNext())
{
Monster monster = iter.next();
if (monster.hasDied())
{
if (monster.getLocation() == location)
{
System.out.println(monster.getDescription() + " has been defeated!");
iter.remove();
}
else
{
iter.remove();
}
}
}
无论如何我可以采用任何一种方法从数组列表中删除指定的怪物吗?
谢谢你的帮助!