将无序的List数据转成树形结构数据

本文介绍如何将无序的List数据转换为树形结构,主要依赖于code和parentCode属性。通过Java实现了一个不固定层级的生成方法,详细展示了Tree.java和TreeTest.java的代码示例,生成的树形结构结果清晰展示各个节点的层级关系。
摘要由CSDN通过智能技术生成

将无序的List数据转成树形结构数据

在平常的项目中,经常会用到树形结构数据,看了一些网友写的生成树形结构的方法,感觉基本都会把层级写的比较死,所以在这里写一个不关联层级的生成方式(层级信息在生成树的时候赋值),依靠code和parentCode两个信息生成最终的树。

Tree.java

package patterns.structure.composite;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 用组合模式构建一棵树
 * 
 * @author joker
 * @date 2018-09-27 22:47
 */
public class Tree {
    

	private String code;

	private String name;

	private String parentCode;

	private Integer level;

	private Tree parent;

	private List<Tree> node;

	public Tree() {
    
	}

	public Tree(String code, String name, String parentCode, Integer level) {
    
		this.code = code;
		this.name = name;
		this.parentCode = parentCode;
		this.level = level;
	}

	public String getCode() {
    
		return code;
	}

	public void setCode(String code) {
    
		this.code = code;
	}

	/**
	 * 将一组无序的树组装成树形结构的数据
	 * 
	 * @param treeList
	 * @return
	 */
	public static List<Tree> buildTree(List<Tree> treeList) {
    
		if (treeList == null || treeList.size() == 0) {
    
			return null;
		}
		List<Tree> trees = getRootNode(treeList);
		trees.forEach(node -> node.setLevel(0));
		List<Tree> parentNodes = trees;
		List<Tree> subNodes;
		int level = 1;
		do {
    
			treeList.removeAll(parentNodes);
			subNodes = getRootNode(treeList);
			if (subNodes != null && subNodes.size() > 0) {
    
				for (Tree subNode : subNodes) {
    
					subNode.
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值