博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 不用递归写tree
阅读量:4071 次
发布时间:2019-05-25

本文共 1278 字,大约阅读时间需要 4 分钟。

 

1 需要确保数据排序是按照创建时间排序的,理论上父节点的创建时间比子节点要小,所以按照create  time asc 

  父节点会在子节点前面。

package com.fhs.ucenter.dto;import lombok.Data;import java.util.ArrayList;import java.util.List;/** * 用户下拉tree DTO */@Datapublic class SysUserOrgDTO {    /**     * 名字     */    private String text;    /**     * id     */    private String id;    /**     * 父id     */    private String parentId;    /**     * 是否是用户     */    private Integer isUser;    /**     * 子集合     */    private List
children = new ArrayList<>(); public SysUserOrgDTO(){} public SysUserOrgDTO(String text, String id, String parentId, Integer isUser, List
children) { this.text = text; this.id = id; this.parentId = parentId; this.isUser = isUser; this.children = children; }}

  上面是dto,下面是生成tree的方法 ,很简单。。比递归可读性强很多

List
dbRecordList = sysUserDAO.getUserOrgTreeList(groupCode); //找不到爸爸的才会放到此里面List
result = new ArrayList<>(); Map
fatherDTO = dbRecordList .stream().collect(Collectors.toMap(SysUserOrgDTO::getId, item -> item));for(SysUserOrgDTO user : dbRecord){ if(fatherDTO.containsKey(user.getParentId())) { fatherDTO.get(user.getParentId()).getChildren().add(user); } else{ result.add(user); }}return result;

 

转载地址:http://khwni.baihongyu.com/

你可能感兴趣的文章
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Java8 HashMap集合解析
查看>>
自定义 select 下拉框 多选插件
查看>>
linux和windows内存布局验证
查看>>
Linux常用统计命令之wc
查看>>
fastcgi_param 详解
查看>>
搞定Java面试中的数据结构问题
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>