java - 如何在Java中的arraylist中递归所有孩子
问题描述
我正在研究一个方法,它应该返回一个包含所有后代的 Arraylist。它几乎可以工作,但总是包括第一个(“最高”)人,但我不需要他。任何人都可以改进我的代码吗?谢谢
getChildren - 只返回一个人的孩子
public ArrayList<Person> getDescendants() {
ArrayList<Person> descendants = new ArrayList<Person>();
ArrayList<Person> next = this.getChildren();
if (next.size() != 0) {
for (int i = 0; i < next.size(); i++) {
ArrayList<Person> b = next.get(i).getDescendants();
descendants.addAll(b);
if (!descendants.contains(this)) {
descendants.add(this);
}
}
return descendants;
} else {
descendants.add(this);
return descendants;
}
}
解决方案
您的代码似乎过于复杂。你是这个意思吗?
public ArrayList<Person> getDescendants() {
ArrayList<Person> descendants = new ArrayList<Person>();
for (Person child : this.getChildren()) {
descendants.add(child);
descendants.addAll(child.getDescendants());
}
return descendants;
}
推荐阅读
- typescript - 如何在打字稿中为具有可变键控子对象的深层对象定义接口
- macos - 有没有办法在苹果 m1 macbook 上安装 Qutip?
- android - 如何在 Android 10 上删除下载文件夹中的临时文件
- arrays - Check if a list and array are equal F#
- tree - MrBayes 外群
- angular - 在 Karma 单元测试中模拟导入选择器的值
- scala - 在带有通配符的匿名函数中使用方括号
- c++ - BluetoothLE 操作何时可以在 Windows 10 上提示同意?
- javascript - 使用nodejs生成带有坐标的缩略图VTT文件
- javascript - 在 XMLHttpRequest 响应中执行 Javascript