失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java list 树_java list转换为树形

java list 树_java list转换为树形

时间:2019-10-14 22:05:24

相关推荐

java list 树_java list转换为树形

感谢有奉献精神的人

转自:/question/129154_235324

构造treelist的过程可以使用递归查询获取,表结构如下

create table TB_TREE

(

id NUMBER not null,

name VARCHAR2(50),

parentId NUMBER //父节点

)

Postgre Sql:

select 语句如下,oracle可以用 start with connect by prior实现类似功能

WITH RECURSIVE r AS (

SELECT

a.id, a.parentid, a.name

FROM TB_TREE a WHERE id= 976

union ALL

SELECT

b.id, b.parentid, b.name

FROM TB_TREE b, r WHERE b.parentid = r.id

)

select

id, parentid, name

from r

import java.util.ArrayList; import java.util.List; public class Tree { private int id;private String name;private int parentId;private List childrens; public Tree(int id,String name,int parentId){this.id = id;this.name = name;this.parentId = parentId; }public int getId() {return id; } public void setId(int id) {this.id = id; } public String getName() {return name; } public void setName(String name) {this.name = name; } public int getParentId() {return parentId; } public void setParentId(int parentId) {this.parentId = parentId; } public List getChildrens() {return childrens; } public void setChildrens(List childrens) {this.childrens = childrens; } @Override public String toString() {return "Tree [id=" + id + ", name=" + name + ", parentId=" + parentId + ", childrens=" + childrens + "]"; } public static void main(String[] args) {Tree tree1 = new Tree(1, "顶层节点1", 0);Tree tree2 = new Tree(2, "顶层节点2", 0);Tree tree3 = new Tree(3, "顶层节点3", 0);Tree tree4 = new Tree(4, "二级节点4", 1);Tree tree5 = new Tree(5, "二级节点5", 2);Tree tree6 = new Tree(6, "二级节点6", 3);Tree tree7 = new Tree(7, "三级节点7", 4);Tree tree8 = new Tree(8, "三级节点8", 4);Tree tree9 = new Tree(9, "三级节点9", 5);List trees = new ArrayList();trees.add(tree9);trees.add(tree8);trees.add(tree7);trees.add(tree6);trees.add(tree5);trees.add(tree4);trees.add(tree3);trees.add(tree2);trees.add(tree1);List rootTrees = new ArrayList();for (Tree tree : trees) { if(tree.getParentId() == 0){ rootTrees.add(tree); } for (Tree t : trees) { if(t.getParentId() == tree.getId()){ if(tree.getChildrens() == null){ List myChildrens = new ArrayList(); myChildrens.add(t); tree.setChildrens(myChildrens); }else{ tree.getChildrens().add(t); } } }}for (Tree tree : rootTrees) { System.out.println(tree.toString());} } }

如果觉得《java list 树_java list转换为树形》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。