当我在其中找到特定对象时,如何以递归方式搜索具有相同对象的List的对象。
示例这是我的对象,每个对象可以更深入地使用自己的列表
MyObject:
List<MyObject>
MyObject <- 2) Tag this and move onto next object
List<MyObject>
MyObject
List<MyObject>
MyObject <- 1) BOOM found what I want
List<MyObject>
MyObject
MyObject
MyObject
MyObject
MyObject
MyObject
MyObject
MyObject
我基本上想在我的列表上做一个DFS。我试图递归地做,但我似乎无法正常退出。
答案 0 :(得分:1)
对于上面解释的问题,此解决方案可能会对您有所帮助
<ListItem .../>
abve代码的主要方法
private static boolean search(Object object, Object searchingObject) {
List<?> al = (ArrayList) object;
for (int index = 0; index < al.size(); index++) {
if (al.get(index) instanceof List) {
if(search(al.get(index), searchingObject)) {
return true;
}
} else {
Iterator<Object> itr = (Iterator<Object>) al.iterator();
Object o;
while (itr.hasNext()) {
o = itr.next();
if (o.equals(searchingObject)) {
return true;
}
}
}
}
return false;
}