废话不多讲,直接上代码
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;
}
}