[英]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.