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;
    }
    }
  • 相关阅读:
    陶哲轩实分析习题17.1.4
    陶哲轩实分析习题17.1.4
    陶哲轩实分析习题17.1.2
    群给我的直观印象
    MYSQL数据丢失讨论
    提高大型软件项目质量的一些实用型技术分享
    再培养一个扎克伯克:六款适合儿童上手编程的App
    YouTube架构学习体会
    Web系统架构的一些思考
    备受开发者青睐的13款热门开源项目
  • 原文地址:https://www.cnblogs.com/xingluzhe/p/6648008.html
Copyright © 2011-2022 走看看