普通LIST列表转换为Tree
来源:互联网 发布:lua for windows 编辑:程序博客网 时间:2024/06/04 19:51
普通LIST列表转换为Tree
本文转载至:http://blog.csdn.net/qw7501312/article/details/51544230
public class XMGLTaskDTO { String name; Long parentId; Long id; List<XMGLTaskDTO > childrenTaskList; }
//重新将list转为tree-----------------方式1(循环)
List<XMGLTaskDTO > nodeList = new ArrayList(); for(XMGLTaskDTO node1 : taskDTOList){//taskDTOList 是数据库获取的List列表数据或者来自其他数据源的List boolean mark = false; for(XMGLTaskDTO node2 : taskDTOList){ if(node1.getParentId()!=null && node1.getParentId().equals(node2.getId())){ mark = true; if(node2.getChildrenTaskList() == null) node2.setChildrenTaskList(new ArrayList<XMGLTaskDTO>()); node2.getChildrenTaskList().add(node1); break; } } if(!mark){ nodeList.add(node1); } }
//重新将list转为tree-----------------方式2(递归)
List<XMGLTaskDTO > nodeList = new ArrayList(); nodeList = constructTaskDTOToTree(taskDTOList );//taskDTOList 是数据库获取的List列表数据或者来自其他数据源的List /** * 将List重组为数 * @param taskDTOList DTO集合 * @return List<XMGLTaskDTO> */ public List<XMGLTaskDTO> constructTaskDTOToTree(List<XMGLTaskDTO> taskDTOList){ //key:父节点ID value:子节点集合 Map<Long,List<XMGLTaskDTO>> taskDTOMap = new HashMap<>(); //将List重组到Map中 taskDTOList.forEach(dto -> { List<XMGLTaskDTO> tempTaskDTOList = taskDTOMap.get(dto.getParentId()); if (tempTaskDTOList == null){ tempTaskDTOList = new ArrayList<XMGLTaskDTO>(); taskDTOMap.put(dto.getParentId(),tempTaskDTOList); } tempTaskDTOList.add(dto); }); //顶级节点集合 List<XMGLTaskDTO> resultTaskDTOList = taskDTOMap.get(null); recurTaskDTOList(resultTaskDTOList,taskDTOMap); return resultTaskDTOList; } /** * 将重组好的Map进行树形结构处理 * @param taskDTOList 父节点集合(不一定是顶级节点 因为会递归调用) * @param sourceMap 组装好的Map集合 */ public void recurTaskDTOList(List<XMGLTaskDTO> taskDTOList,Map<Long,List<XMGLTaskDTO>> sourceMap){ if(CollectionUtils.isEmpty(taskDTOList)) return; taskDTOList.forEach(dto -> { dto.setChildrenTaskList(sourceMap.get(dto.getId())); recurTaskDTOList(dto.getChildrenTaskList(),sourceMap); }); }
阅读全文
0 0
- 普通LIST列表转换为Tree
- 普通LIST列表转换为Tree
- 简单的list查询转换为tree结构
- List转换成Tree
- java ArrayList数组列表 通过 toArray 转换为普通对象数组
- 普通表转换为分区表
- 普通字符串转换为十六进制
- list转换为数组
- datatable转换为list
- DataTable转换为List
- DataTable转换为List
- list 转换为 str
- DataTable 转换为 List
- datatable转换为list
- list转换为map
- DataTable 转换为 List ?
- List转换为JSON
- JsonArray转换为List
- #define中的#和##作用
- Eclipse Java EE IDE for Web Developers集成的Maven 3 如何应用?
- java程序初始化过程
- VS2017 .net core web项目 添加引用 报错 vs2017添加引用时报错未能正确加载“ReferenceManagerPackage”包
- 200_IO流_序列化版本号_serialVersionUID详解
- 普通LIST列表转换为Tree
- 每天TB级数据处理,携程大数据高并发应用架构涅槃
- PHP 函数
- maven打包时跳过测试
- CodeForces 314 B.Sereja and Periods 思维+简单dp【转】
- Opencv Surf算子特征提取与最优匹配
- Linux系统安全配置基线
- 【hdu3642】Get The Treasury (立方体体积交+线段树+扫描线)
- python3 module学习之keyword