本文共 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 Listchildren = 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的方法 ,很简单。。比递归可读性强很多
ListdbRecordList = 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/