java list 转 tree,加排序

参考文章,十分感谢

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值