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;
    }
    }
  • 相关阅读:
    npm常用命令
    关于事件委托和时间冒泡(以及apply和call的事项)
    js 杂记
    angular中关于ng-repeat的性能问题
    关于日期的一些东西
    杂记
    angular中关于自定义指令——repeat渲染完成后执行动作
    angular中事件戳转日期的格式
    ES6-promise
    angular中ng-class的一些用法
  • 原文地址:https://www.cnblogs.com/xingluzhe/p/6648008.html
Copyright © 2011-2022 走看看