解决Java ArrayList与递归索引删除?

gor*_*i93 0 java algorithm recursion arraylist

我有一个奇怪的问题,我知道可以解决的方法,但是这次我想用数组列表来解决。问题出在这里:我有一棵员工树。Employee是一个简单的类(在为此雇员工作的雇员列表下):

class Employee
{
    String name;
    ArrayList<Employee> under = new ArrayList<Employee>();

    //fire function
}
Run Code Online (Sandbox Code Playgroud)

我的任务是递归解雇所有没有雇员的雇员。我知道如何使用自定义列表数据结构来解决此问题,但是我想使用数组列表来做到这一点。到目前为止,这是我的代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

但是此代码的问题是,当我删除under.remove(x)时under.size()会变小,索引会变得混乱。我尝试在每个under.remove(x)之后设置x = 0,但它做得并不正确。仍有很多员工离职。有数组列表结构的解决方案吗?