【优雅的递归】

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;
	}
	

拿走不谢!

你可能感兴趣的:(Java知识总结,java)