网友投稿 449 2022-08-23
Java多级菜单树转为面包屑
菜单树json格式
方法
public List>> getList(String metricsAlias) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); List list = this.list(queryWrapper); List categoryVoS = mapperFactory.getMapperFacade().mapAsList(list, MetricsCategoryVO.class); // 先将菜单转为树状结构 categoryVoS = buildCategoryTree(categoryVoS);// key:code,value:该code从父级到自己级别的name List>> mapList = new ArrayList<>(); for (MetricsCategoryVO metricsCategoryVO : categoryVoS) { Map> mapTemp = new LinkedHashMap<>(); List nameLists = new ArrayList<>(); Map> categoryMetricsVOs = this.getCategoryMetricsVOs(0,metricsCategoryVO, mapTemp, nameLists); mapList.add(categoryMetricsVOs); } return mapList; } /** * 向下递归查询顶级类型的各层级名称全称 */ private Map> getCategoryMetricsVOs(int i, MetricsCategoryVO metricsCategoryVO, Map> mapTemp, List nameLists) { nameLists.add(metricsCategoryVO.getMetricsCategoryName());// 必须新建一个,因为下方map中的value是存的nameLists的内存地址引用 List newNameLists = new ArrayList<>(nameLists); mapTemp.put(metricsCategoryVO.getMetricsCategoryCode(), newNameLists); List children = metricsCategoryVO.getChildren(); if (CollectionUtil.isNotEmpty(children)) { for (MetricsCategoryVO c : children) { i = ++i; getCategoryMetricsVOs(i, c, mapTemp, nameLists); } } else {// 去掉前面集合中多余名字 for (int j = 0; j < i - 1; j++) { nameLists.remove(nameLists.size() - 1); } } return mapTemp; }
结果
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~
暂时没有评论,来抢沙发吧~