我有一个奇怪的问题,我知道周围的工作,但我想做与数组列表这一次。问题是:
我有一棵员工树Employee是一个简单的类(下面是为该员工工作的员工列表):
class Employee
{
String name;
ArrayList<Employee> under = new ArrayList<Employee>();
//fire function
}
我的任务是递归地解雇所有没有下属的员工我知道如何处理自定义列表数据结构,但我想用数组列表来处理。这是我目前的代码:
public boolean Fire()
{
if (under.isEmpty())
return true;
else
{
for (int x = 0; x < under.size(); x ++)
{
if (under.get(x).Fire())
under.remove(x);
}
}
return false;
}
但这段代码的问题是,当我删除under.remove(x)时under.size()会变小,索引也会变乱我试着在每个under.remove(x)之后设置x=0,但它并没有完全正确还有一个员工。有没有数组列表结构的解决方案?
最佳答案
这是删除或删除的典型问题。
您必须在列表中向后迭代这样,当您删除一个元素时,就不会跳过其他元素或超过列表的末尾。
public boolean Fire()
{
if (under.isEmpty())
return true;
else
{
for (int x = under.size() - 1; x >= 0; x--)
{
if (under.get(x).Fire())
under.remove(x);
}
}
return false;
}