当前位置: 首页 > article >正文

java 构建树型结构

构建属性结构

 public static List<Map<String, Object>> buildTree(List<AreaInfo> dataList) {

        Map<String, Map<String, Object>> nodeMap = new HashMap<>();

        List<Map<String, Object>> result = new ArrayList<>();

        for (AreaInfodata : dataList) {
            String id = data.getAreaCode();
            String label = data.getAreaName();
            Map<String, Object> node = new HashMap<>();
            node.put("id", id);
            node.put("label", label);
            node.put("children", new ArrayList<Map<String, Object>>());
            nodeMap.put(id, node);
        }

        // 构建父子关系
        for (AreaInfodata : dataList) {
            String id = data.getAreaCode();
            String parentId = data.getParentId();
            //判断是否是父级
            if (parentId.equals("100000")) {
                result.add(nodeMap.get(id));
            } else {
                // 否则,将当前节点加入到父节点的children列表
                Map<String, Object> parentNode = nodeMap.get(parentId);
                if (parentNode != null) {
                    List<Map<String, Object>> childrenList = (List<Map<String, Object>>) parentNode.get("children");
                    childrenList.add(nodeMap.get(id));
                }
            }
        }

        return result;
    }
     public List<Map<String, Object>>   bulidAreaInfoTree() {
        List<AreaInfo> all = repository.findAll();
        List<Map<String, Object> >stringObjectMap = buildTree(all);
        return areaInfoMap;
    }

在这里插入图片描述


http://www.kler.cn/a/457017.html

相关文章:

  • HTML——26.像素单位
  • ThinkPHP 8高效构建Web应用-第一个简单的MVC应用示例
  • 【UVM】搭建一个验证平台
  • 【JS】期约的Promise.all()和 Promise.race()区别
  • 力扣-数据结构-8【算法学习day.79】
  • uniapp:微信小程序文本长按无法出现复制菜单
  • 数字设计实验:RISC-V指令单周期CPU
  • 简单的skywalking探针加载原理学习
  • apifox
  • Vulnhub靶场morpheus获得shell攻略
  • spring url匹配
  • WordPress Elementor Page Builder 插件存在任意文件读取漏洞(CVE-2024-9935)
  • python编译为可执行文件
  • 读书笔记-《乡下人的悲歌》
  • 【Rust自学】7.4. use关键字 Pt.2 :重导入与换国内镜像源教程
  • vite 多环境变量配置
  • 安装 PostgreSQL 数据库的教程
  • 新品:SA628F39大功率全双工音频传输模块
  • systemverilog语法:assertion summary
  • 前端node.js
  • SpringBoot + vue 管理系统
  • 未来具身智能的触觉革命!TactEdge传感器让机器人具备精细触觉感知,实现织物缺陷检测、灵巧操作控制
  • SQL中的窗口函数
  • 【HarmonyOS之旅】ArkTS语法(一)
  • PDF书籍《手写调用链监控APM系统-Java版》第3章 配置文件系统的建立
  • 机器人C++开源库The Robotics Library (RL)使用手册(二)