zoukankan      html  css  js  c++  java
  • java8 创建树结构的数据

    private List<TreeNode> createTree(Integer pid, Map<Integer, List<SysPermission>> map){
    return Optional.ofNullable(map.get(pid)).orElseGet(()->new ArrayList<SysPermission>()).stream().filter(x->x.getParentId() == pid).sorted((x,y)->{return x.getSortNo().compareTo(y.getSortNo());}).map(x->{
    return new TreeNode(x.getRecId(), x.getParentId(), x.getPermissionName(), x.getIcon(), createTree(x.getRecId(), map));
    }).collect(Collectors.toList());
    }

    private List<TreeNode> getTree(boolean onlyModule){
    EntityWrapper<SysPermission> entityWrapper = new EntityWrapper<>();
    entityWrapper.where("data_status>0");
    if (onlyModule){
    entityWrapper.eq("permission_type", PermissionType.MODULE.getValue());
    }
    entityWrapper.orderBy("sort_no");
    List<SysPermission> list = selectList(entityWrapper);
    return createTree(0, list.stream().collect(groupingBy(SysPermission::getParentId)));
    }

    TreeNode的定义:
    public class TreeNode {
    private static final long serialVersionUID = 1L;

    private Integer recId;
    private Integer pid;
    private String nodeName;
    private String icon;
    private List<TreeNode> children;

    public TreeNode(Integer recId, Integer pid, String nodeName, String icon) {
    this.recId = recId;
    this.pid = pid;
    this.nodeName = nodeName;
    this.icon = icon;
    this.children = new ArrayList<TreeNode>();
    }

    public TreeNode(Integer recId, Integer pid, String nodeName, String icon, List<TreeNode> children) {
    this.recId = recId;
    this.pid = pid;
    this.nodeName = nodeName;
    this.icon = icon;
    this.children = children;
    }

    public Integer getRecId() {
    return recId;
    }

    public void setRecId(Integer recId) {
    this.recId = recId;
    }

    public Integer getPid() {
    return pid;
    }

    public void setPid(Integer pid) {
    this.pid = pid;
    }

    public String getNodeName() {
    return nodeName;
    }

    public void setNodeName(String nodeName) {
    this.nodeName = nodeName;
    }

    public String getIcon() {
    return icon;
    }

    public void setIcon(String icon) {
    this.icon = icon;
    }

    public List<TreeNode> getChildren() {
    return children;
    }

    public void setChildren(List<TreeNode> children) {
    this.children = children;
    }
    }
  • 相关阅读:
    开发一个微信小程序实例教程
    java注解
    dubbo provider提供者服务打包
    Dubbo记录
    SpringBoot整合ActiveMQ 生产者---消费者
    dubbox 的各种管理和监管
    Zookeeper 3.5启动时 8080端口被占用
    springboot整合最新版dubbo以及dubbo-admin的安装
    分布式服务框架 dubbo/dubbox 入门示例
    Maven安装配置【WIN10】
  • 原文地址:https://www.cnblogs.com/xingluzhe/p/6648008.html
Copyright © 2011-2022 走看看