zoukankan      html  css  js  c++  java
  • 递归构造树

    @Data
    @NoArgsConstructor
    public class Foo {
    
        private Integer id;
    
        private Integer parentId;
    
        private List<Foo> children;
    
        public Foo(Integer id, Integer parentId) {
            this.id = id;
            this.parentId = parentId;
        }
    }
    public class FooTest {
    
        public static  Foo BuildTree(List<Foo> fooList){
            Foo root = new Foo();
            fooList.forEach(item ->{
                if(item.getParentId() == 0){
                    root.setId(item.getId());
                    root.setParentId(0);
                    root.setChildren(getChild(item.getId(),fooList));
                }
            });
            return root;
        }
        private static List<Foo> getChild(Integer id, List<Foo> fooList) {
            List<Foo> child = Lists.newArrayList();
            fooList.forEach(item->{
                if(item.getParentId() == id){
                    child.add(item);
                }
            });
            child.forEach(item ->{
                item.setChildren(getChild(item.getId(),fooList));
            });
            if(CollectionUtils.isEmpty(child)){
                return new ArrayList<Foo>();
            }
            return child;
        }
    
        public static void main(String[] args) {
            List<Foo> list = new ArrayList<>();
            list.add(new Foo(1,0));
            list.add(new Foo(2,1));
            list.add(new Foo(3,1));
            list.add(new Foo(4,1));
            list.add(new Foo(5,2));
            list.add(new Foo(6,3));
            Foo foo = BuildTree(list);
            System.out.println(foo);
        }
    }

    result:

    Foo(id=1, parentId=0, children=[Foo(id=2, parentId=1, children=[Foo(id=5, parentId=2, children=[])]), Foo(id=3, parentId=1, children=[Foo(id=6, parentId=3, children=[])]), Foo(id=4, parentId=1, children=[])])

  • 相关阅读:
    MongoDB Replica Set 选举过程
    转 Warning:MongoDB Replica Sets配置注意事项
    mongodb与内存
    mongodb的监控与性能优化
    php 5.5.1 编译安装过程
    java知识点积累(一)
    java内存及数据区
    static及静态方法
    接口和抽象类
    Java SE自学阶段的笔记整理
  • 原文地址:https://www.cnblogs.com/enchaolee/p/11712308.html
Copyright © 2011-2022 走看看