Java小程序:list和tree相互转换

废话不多讲,直接上代码

public class TreeDTO {
    private String id;
    private String parentId;
    private String name;

    private List children;
    public TreeDTO() {  }
    public TreeDTO(String id,String parentId,String name) {
        this.id = id;
        this.name= name;
        this.parentId=parentId;
    }
    //setters getters
    @Override
    public String toString() {
        return this.id+","+this.parentId+","+this.name;
    }   
}

public class TreeListConvertDemo {      
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add(new TreeDTO("1",null,"中国"));
        list.add(new TreeDTO("2","1","广东"));
        list.add(new TreeDTO("3","2","广州"));
        list.add(new TreeDTO("4","2","深圳"));
        list.add(new TreeDTO("5","3","越秀"));
        list.add(new TreeDTO("6","3","天河"));
        list.add(new TreeDTO("7","4","福田"));
        list.add(new TreeDTO("8","4","南山"));
        list.add(new TreeDTO("9","4","罗湖"));
        list.add(new TreeDTO("10","1","河南"));
        list.add(new TreeDTO("11","10","郑州"));
        list.add(new TreeDTO("12","11","二七"));  
        List trees = list2tree(list);
        System.out.println(trees.size());
        List list2 = new ArrayList<>();  
        tree2list(trees.get(0),list2,null);
        System.out.println(list2.size());
    }

    //Tree转list
    public static void tree2list(TreeDTO root,List list,String parentId){
        if (root == null) {
            return ;
        }
//      TreeDTO d = new TreeDTO(UUIDUtil.getId(),parentId,root.getName());
        TreeDTO d = new TreeDTO(root.getId(),parentId,root.getName());
        list.add(d);
        if (root.getChildren()==null){
            return;
        }
        for (TreeDTO sub:root.getChildren()){
            tree2list(sub, list, d.getId());
        }       
    }

    //list转Tree
    public static List list2tree(List srclist){       
        List trees = new ArrayList();
        for (TreeDTO t1:srclist){
            boolean isRoot = true;
            for (TreeDTO t2:srclist){
                if (t1.getParentId()!=null&&t1.getParentId().equals(t2.getId())){
                    isRoot = false;
                    if (t2.getChildren()==null){
                        t2.setChildren(new ArrayList());
                    }
                    t2.getChildren().add(t1);
                    break;
                }
            }
            if (isRoot){
                trees.add(t1);
            }
        }
        return trees;
    }
}

你可能感兴趣的:(JAVA)