JAVA构建List集合为树形结构的方法和代码

简介: JAVA构建List集合为树形结构的方法和代码

package com.zving.tree;

import java.util.ArrayList;
import java.util.List;
/**

  • 树形结构实体类
  • @author clove
    */
    public class Node {
    private int id;
    private int pid;
    private String name;
    private String type;
    private List children = new ArrayList<>();
    public Node(int id, int pid) {
     this.id = id;
     this.pid = pid;
    
    AI 代码解读

//代码效果参考:http://www.zidongmutanji.com/zsjx/43551.html

public Node(int id, int pid, String name, String type) {
    this(id, pid);
    this.name = name;
    this.type = type;
public int getId() {
    return id;
public void setId(int id) {
public int getPid() {
    return pid;
public void setPid(int pid) {
public String getName() {
    return name;
public void setName(String name) {
public String getType() {
    return type;
public void setType(String type) {
public List<Node> getChildren() {
    return children;
public void setChildren(List<Node> children) {
    this.children = children;
AI 代码解读

}  

复制代码
import java.util.Map;
import java.util.stream.Collectors;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TreeController {
@RequestMapping("/tree")
public List getTree() {
List nodeList = getNodeList();
List tree = buildTree(nodeList);
return tree;
// 初始化数据集合
private List getNodeList() {
List list = new ArrayList();
Node node1 = new Node(1, 0, "公司库", "股票");
Node node2 = new Node(2, 0, "基金库", "基金");
Node node3 = new Node(111, 1, "A股市场", "股票");
Node node4 = new Node(112, 1, "港股市场", "股票");
Node node5 = new Node(211, 2, "公墓基金池", "基金");
Node node6 = new Node(212, 2, "非公墓基金池", "基金");
Node node7 = new Node(11111, 111, "基础池", "股票");
Node node8 = new Node(21211, 212, "可买池", "基金");
list.add(node1);
list.add(node2);
list.add(node3);
list.add(node4);
list.add(node5);
list.add(node6);
list.add(node7);
list.add(node8);
return list;

//代码效果参考:http://www.zidongmutanji.com/zsjx/267563.html
// 封装集合为树形结构
private List buildTree(List nodes) {
Map> children = nodes.stream().filter(node -> node.getPid() != 0)
.collect(Collectors.groupingBy(node -> node.getPid()));
nodes.forEach(node -> node.setChildren(children.get(node.getId())));
return nodes.stream().filter(node -> node.getPid() == 0).collect(Collectors.toList());

相关文章
快手小红书抖音留痕工具,自动留痕插件工具,java代码开源
这个框架包含三个核心模块:主操作类处理点赞评论、配置管理类和代理管理类。使用时需要配合
tiktok群控脚本,养号关注私信点赞脚本插件,java代码分享
这个代码模拟了一个社交机器人的基本行为模式,包括登录、关注、点赞、私信等操作。请注意
Java 期末考试救急必备涵盖绝大多数核心考点及五大类经典代码助你过关
本文为Java期末考试复习指南,涵盖基础语法、面向对象编程、异常处理、文件操作、数据库连接五大核心考点,提供详细解析与实用代码示例,助力快速掌握重点,高效备考,轻松应对考试。
28 0
基于Java 17 + Spring Boot 3.2 + Flink 1.18的智慧实验室管理系统核心代码
这是一套基于Java 17、Spring Boot 3.2和Flink 1.18开发的智慧实验室管理系统核心代码。系统涵盖多协议设备接入(支持OPC UA、MQTT等12种工业协议)、实时异常检测(Flink流处理引擎实现设备状态监控)、强化学习调度(Q-Learning算法优化资源分配)、三维可视化(JavaFX与WebGL渲染实验室空间)、微服务架构(Spring Cloud构建分布式体系)及数据湖建设(Spark构建实验室数据仓库)。实际应用中,该系统显著提升了设备调度效率(响应时间从46分钟降至9秒)、设备利用率(从41%提升至89%),并大幅减少实验准备时间和维护成本。
121 0
Java中List排序的3种方法!(5)
Java中List排序的3种方法!(5)
395 0
Java中List排序的3种方法!(5)
Java中List排序的3种方法!(4)
Java中List排序的3种方法!(4)
283 0
Java中List排序的3种方法!(4)
Java中List排序的3种方法!(3)
Java中List排序的3种方法!(3)
367 0
Java中List排序的3种方法!(3)
Java中List排序的3种方法!(2)
Java中List排序的3种方法!(2)
188 0
Java中List排序的3种方法!(2)
Java中List排序的3种方法!(1)
Java中List排序的3种方法!(1)
465 0
Java中List排序的3种方法!(1)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问