SpringBoot实现扫码登录的示例代码
318
2022-08-19
java树结构stream工具类的示例代码详解
菜单http://实体类
package com.example.demo.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Menu {
/**
* id
*/
public Integer id;
* 名称
public String name;
* 父id ,根节点为0
public Integer parentId;
* 子节点信息
public List
public Menu(Integer id, String name, IntetEFFZbtmwyger parentId) {
this.id = id;
this.name = name;
this.parentId = parentId;
}
}
生成树结构工具类
package com.example.demo.util;
import cn.hutool.json.JSONUtil;
import com.example.demo.entity.Menu;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
public class TreeUtil {
/**
* 递归查询子节点
*
* @param root 根节点
* @param all 所有节点
* @return 根节点信息
*/
public static List
List
return Objects.equals(m.getParentId(), root.getId());
}).map(
(m) -> {
m.setChildList(getChildrens(m, all));
return m;
}
).collect(ColletEFFZbtmwyctors.toList());
return children;
}
* @param parentId 父节点id
* @param menus 菜单集合
* @return 返回id等于parentId的子孙节点树结构 (不包含id等于parentId的节点)
public static List
//获取父节点
List
m.setChildList(getChildrens(m, menus));
return tree;
public static void main(String... args) {
//模拟从数据库查询出来
List
new Menu(1, "0-1", 0),
new Menu(2, "0-1-2", 1),
new Menu(3, "0-1-2-3", 2),
new Menu(4, "0-1-2-4", 2),
new Menu(5, "0-1-2-5", 2),
new Menu(6, "0-6", 0),
new Menu(7, "0-6-7", 6),
new Menu(8, "0-6-8", 6),
new Menu(9, "0-6-7-9", 7),
new Menu(10, "0-6-7-10", 7),
new Menu(11, "0-11", 0),
new Menu(12, "0-11-12", 11)
);
List
System.out.println("-------转json输出结果-------");
System.out.println(JSONUtil.parseArray(tree).toString());
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~