【发布时间】:2018-06-01 15:36:09
【问题描述】:
我遇到了递归问题。我有一个包含自身列表的对象,列表中的每个对象都可以包含一个列表本身。这个对象代表一棵树。
现在我想迭代所有可能的对象以找到 1 个特定对象,但我失败了。目前我的方法没有返回到顶层,我不知道如何修复它。
方法:
private Object selectSpecificItem(TreeObject treeObject) {
for (TreeObject to : treeObject.getChildren()) {
Object data = to.getData();
if (data instanceof PaymentOffice) {
PaymentOffice po = (PaymentOffice) data;
if (po.getCode().equals(getModelObject().getLocation())) {
return to;
}
} else if (to.getChildren().length > 0) {
selectSpecificItem(to);
}
}
return null;
}
假设以下列表结构:
Item1
- Item1.1
- Item1.2
- Item1.3
- Item1.4
Item2
Item3
现在它遍历所有 1/1.x 项,但不是 2/3。我现在需要找到的项目是Item3
如何更改递归以迭代所有元素?
【问题讨论】:
-
您可能想在 else if 中将
selectSpecificItem(to);更改为return selectSpecificItem(to); -
@Lino 我也试过了,但没有任何改变
-
您是否有任何根 TreeObject 可以容纳 Item1、Item2。 Item3 作为它的子项?
-
@NisheshPratap 是的,它作为第一次调用传入
-
好吧,你没有迭代其他 2 个项目,因为在第一个项目中你已经返回了一些东西