如何在包含对象列表的对象列表上执行DFS

时间:2017-09-04 17:29:54

标签: java algorithm list search dfs

当我在其中找到特定对象时,如何以递归方式搜索具有相同对象的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。我试图递归地做,但我似乎无法正常退出。

enter image description here

1 个答案:

答案 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;
}