java实现构造无限层级树形结构

起步

实现一个树形结构,新建一个Tree类,主要包含节点id,父节点 默认0为根节点parentId,节点的名称name,是否存在子节点hasChild

public class Tree{
				/**
				* 节点id
				*/
				private String id;
				/**
				* 父节点 默认0为根节点
				*/
				private String parentId;
				/**
				* 节点名称
				*/
				private String name;
				/**
				* 是否有子节点
				*/
				private boolean hasChild;
				
				public String getId() {
						return id;
				}
				
				public void setId(String id) {
				this.id = id;
				}
				
				public String getParentId() {
						return parentId;
				}
				
				public void setParentId(String parentId) {
						this.parentId = parentId;
				}
				
				public String getName() {
						return name;
				}
				
				public void setName(String name) {
						this.name = name;
				}
				
				public boolean isHasChild() {
						return hasChild;
				}
				
				public void setHasChild(boolean hasChild) {
						this.hasChild = hasChild;
				}
				
				public Tree(String id, String parentId, String name) {
						this.id = id;
						this.parentId = parentId;
						this.name = name;
			}
}

新建一个构造树形结构的工具类

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class TreeUtil {
public static Map<String, Object> mapArray = new LinkedHashMap<String, Object>();

public List<Tree> tree;
public List<Object> list = new ArrayList<Object>();

public List<Object> treeMenu(List<Tree> tree) {
			this.tree = tree;
			for (Tree treeNode : tree) {
				Map<String, Object> mapArr = new LinkedHashMap<String, Object>();
				if (treeNode.getParentId().equals("0")) {
				setTreeMap(mapArr, treeNode);
				list.add(mapArr);
			}
}
return list;
}

public List<?> child(String id) {
List<Object> lists = new ArrayList<Object>();
		for (Tree a : tree) {
			Map<String, Object> childArray = new LinkedHashMap<String, Object>();
			if (a.getParentId().equals(id)) {
					setTreeMap(childArray, a);
					lists.add(childArray);
			}
}
return lists;
}

private void setTreeMap(Map<String, Object> mapArr, Tree treeNode) {
			mapArr.put("id", treeNode.getId());
			mapArr.put("name", treeNode.getName());
			mapArr.put("parentId", treeNode.getParentId());
			List<?> children = child(treeNode.getId());
			if (children.size() > 0) {
					mapArr.put("hasChild", true);
			} else {
					mapArr.put("hasChildren", false);
			}
					mapArr.put("children", child(treeNode.getId()));
			}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值