java递归查询组织结构树

时间:2022-06-23
本文章向大家介绍java递归查询组织结构树,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
//得到所有的菜单数据      
List<FunctionJson> indoMenu = getList()

// 得到所有的父菜单,顶级菜单
List<FunctionJson> parentIds = indoMenu.stream().filter(item -> item.getFid().equals("-1")).collect(Collectors.toList());
//得到所有的子级菜单 List
<FunctionJson> childIds = indoMenu.stream().filter(item -> !item.getFid().equals("-1")).collect(Collectors.toList()); //将子级菜单,根据父id分组 Map<String, List<FunctionJson>> collectMap = childIds.stream().collect(Collectors.groupingBy(item -> item.getFid())); doTree(parentIds, collectMap); return parentIds; } private void doTree(List<FunctionJson> parentIds, Map<String, List<FunctionJson>> collectMap) { //遍历父节点的集合 parentIds.forEach(item -> { //根据父id取值,看是否有值 if (!CollectionUtils.isEmpty(collectMap.get(item.getId()))) { item.setChildren(collectMap.get(item.getId())); //还有子类,将子类当做父类,继续取子类的子类,直到取完 doTree(item.getChildren(), collectMap); } }); }

原文地址:https://www.cnblogs.com/xxfcode/p/16406079.html