[英]How to do a DFS on a list of objects which also contains a list of objects
如何递归搜索具有相同对象列表的对象,并在其中找到特定对象时中断。
示例这是我的对象,每个对象都可以使用自己的列表更深入
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。 我试图递归地执行它,但我似乎无法正确退出它。
对于上面解释的问题,此解决方案可能对您有所帮助
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;
}
上面代码的主要方法
public static void main(String[] args) {
ArrayList<ArrayList> o = new ArrayList<>();
ArrayList<Integer> al = new ArrayList<>();
ArrayList<ArrayList<Integer>> o1 = new ArrayList<>();
al.add(2);
al.add(3);
al.add(4);
o1.add(al);
o.add(o1);
Integer i = 4;//Object which has to be searched
System.out.println(search(o,i));//returning true
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.