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

来源:互联网 发布:数据库架构师培训 编辑:程序博客网 时间:2024/06/16 12:25

废话不多讲,直接上代码

public class TreeDTO {    private String id;    private String parentId;    private String name;    private List<TreeDTO> 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<TreeDTO> list = new ArrayList<TreeDTO>();        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<TreeDTO> trees = list2tree(list);        System.out.println(trees.size());        List<TreeDTO> list2 = new ArrayList<>();          tree2list(trees.get(0),list2,null);        System.out.println(list2.size());    }    //Tree转list    public static void tree2list(TreeDTO root,List<TreeDTO> 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<TreeDTO> list2tree(List<TreeDTO> srclist){               List<TreeDTO> trees = new ArrayList<TreeDTO>();        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<TreeDTO>());                    }                    t2.getChildren().add(t1);                    break;                }            }            if (isRoot){                trees.add(t1);            }        }        return trees;    }}
原创粉丝点击