JAVA代码如何将一个list转换为树形结构呢?
下文笔者讲述list转树形结构的方法分享,如下所示
实现思路: 只需遍历Node节点 分别设置其children属性,即可实现树形结构的效果例:
//定义 实体对象 @Data public class Node { private Integer id; private String city; private Integer pid; private List<Node> children; public Node(Integer id,String city,Integer pid){ this.id = id; this.city = city; this.pid = pid; } } //编写转换工具类 public class TreeUtils { //把一个List转成树 static List<Node> buildTree(List<Node> list,Integer pid){ List<Node> tree=new ArrayList<>(); for(Node node:list){ if(Objects.equals(node.getPid(),pid)){ tree.add(findChild(node,list)); } } return tree; } static Node findChild(Node node, List<Node> list){ for(Node n:list){ if(Objects.equals(n.getPid(),node.getId())){ if(node.getChildren() == null){ node.setChildren(new ArrayList<Node>()); } node.getChildren().add(findChild(n,list)); } } return node; } //测试list转树形结构 public static void main(String[] args) { Node node0=new Node(0,"中国",-1); Node node1=new Node(1,"湖北省",0); Node node2=new Node(2,"武汉市",1); Node node3=new Node(3,"洪山区",2); Node node4=new Node(4,"宜昌市",1); Node node5=new Node(5,"上海市",0); Node node6=new Node(6,"静安区",5); List<Node> list=new ArrayList<>(); list.add(node3); list.add(node4); list.add(node1); list.add(node2); list.add(node5); list.add(node6); list.add(node0); List<Node> nodes = buildTree(list,-1); System.out.println(JSON.toJSONString(nodes)); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。