java list 转 tree,加排序

来源:互联网 发布:java 替换@为换行 编辑:程序博客网 时间:2024/05/16 14:25

参考文章,十分感谢

http://blog.csdn.net/massivestars/article/details/53911620

实体类

import java.util.List;public class Resource implements Comparable<Resource> {    /**     * 主键ID     */    private String id;    /**     * 父ID     */    private String pId;    /**     * 名称     */    private String name;    /**     * 第几级     */    private Integer leaf;    /**     * 排序     */    private Integer sno;    /**     * 子权限     */    private List<Resource> children;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id == null ? null : id.trim();    }    public String getpId() {        return pId;    }    public void setpId(String pId) {        this.pId = pId == null ? null : pId.trim();    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name == null ? null : name.trim();    }    public Integer getLeaf() {        return leaf;    }    public void setLeaf(Integer leaf) {        this.leaf = leaf;    }    public Integer getSno() {        return sno;    }    public void setSno(Integer sno) {        this.sno = sno;    }    public List<Resource> getChildren() {        return children;    }    public void setChildren(List<Resource> children) {        this.children = children;    }    @Override    public int compareTo(Resource o) {        // 先根据节点排序,再根据排序号排序        int i = this.getLeaf() - o.getLeaf();        if (i == 0) {            i = this.getSno() - o.getSno();        }        return i;    }}

list 转 tree 方法(两层循环实现建树 )

public List<Resource> bulid(List<Resource> resources) {    List<Resource> trees = new ArrayList<Resource>();    for (Resource treeNode : resources) {        for (Resource it : resources) {            if (it.getpId().equals(treeNode.getId())) {                if (treeNode.getChildren() == null) {                    treeNode.setChildren(new ArrayList<Resource>());                }                treeNode.getChildren().add(it);                // 排序                Collections.sort(treeNode.getChildren());            }        }    }    // 排序    Collections.sort(trees);    return trees;}