public static List<Node> buildSourceData() {
return new ArrayList<>(){{
add(new Node(1, 0, "一"));
add(new Node(2, 1, "二"));
add(new Node(3, 2, "三"));
add(new Node(4, 1, "四"));
add(new Node(5, 4, "五"));
add(new Node(6, 0, "6"));
add(new Node(7, 0, "7"));
add(new Node(8, 6, "8"));
add(new Node(9, 6, "9"));
}};
}
public static void main(String[] args) {
List<Node> nodes = buildSourceData();
List<Node> nodes1 = buildTree(nodes);
System.out.println(JSON.toJSONString(nodes1));
}
public static List<Node> buildTree(List<Node> nodes) {
Map<Integer, List<Node>> nodeMap = nodes.stream().filter(node -> node.getPid() != 0)
.collect(Collectors.groupingBy(Node::getPid));
nodes.forEach(node -> node.setTreeNode(nodeMap.get(node.getId())));
return nodes.stream().filter(node -> node.getPid() == 0).toList();
}
public static class Node {
private Integer id;
private Integer pid;
private String name;
private List<Node> treeNode = new ArrayList<>();
public List<Node> getTreeNode() {
return treeNode;
}
public void setTreeNode(List<Node> treeNode) {
this.treeNode = treeNode;
}
public Node() {
}
public Node(Integer id, Integer pid, String name) {
this.id = id;
this.pid = pid;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getPid() {
return pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了