繁体   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