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=[])])

  • 相关阅读:
    字符串切片
    格式化输出
    原生链+对象冒充组合继承模式
    对象冒充继承和原生链实现继承的方法和问题
    xlwt使用
    xlrd使用
    pip安装插件库
    第一天入驻博客园
    2-2ARP概念
    1-14常用的应用层协议及应用
  • 原文地址:https://www.cnblogs.com/enchaolee/p/11712308.html
Copyright © 2011-2022 走看看