簡體   English   中英

如何對還包含對象列表的對象列表執行 DFS

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM