gpt4 book ai didi

java - 解决Java ArrayList remove with recursion index?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:02 25 4
gpt4 key购买 nike

我有一个奇怪的问题,我知道如何解决,但这次我想用数组列表来解决。这是问题所在:我有一棵员工树。 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;
}

关于java - 解决Java ArrayList remove with recursion index?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16364100/

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