【优雅的递归】

Java8优雅的递归

/**
	 * 封装树形结构
	 * @param data
	 * @return
	 */
	public List<TreeVo> listWithTree(List<TreeVo> data) {
	    //将数据组成树形结构
	    //筛选出根元素
	    //利用stream函数来过滤和处理
	    List<TreeVo> root = data.stream().filter(tmp ->
	        tmp.getParentId() == 0//获取所有父节点
	    ).map(tmps -> {
	        //设置子节点
	        tmps.setChildren(getChildrens(tmps, data));
	        return tmps;
	    }).collect(Collectors.toList()); 
	    return root;
	}

	/**
	 * 查找所有root的子节点,方法内是递归查找
	 * @param root
	 * @param all
	 * @return
	 */
	private List<TreeVo> getChildrens(TreeVo root, List<TreeVo> all) {
	    List<TreeVo> children = all.stream().filter(tmp ->
	        tmp.getParentId().equals(root.getId())
	    ).map(tmps -> {
	        //查找所有子节点的子节点
	    	tmps.setChildren(getChildrens(tmps, all));
	        return tmps;
	    }).collect(Collectors.toList());
	    return children;
	}
	

拿走不谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值