package com.yc.util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class NodeUtil{
List<Node> returnList = new ArrayList<Node>();
public static void main(String[] args) {
List<Node> data = new ArrayList<Node>();
Node root = new Node();
root.setName("因才");
root.setId(1);
root.setPid(0);
data.add(root);
Node node1 = new Node();
node1.setName("开发部");
node1.setId(2);
node1.setPid(1);
data.add(node1);
Node node12 = new Node();
node12.setName("开发一组");
node12.setId(4);
node12.setPid(2);
data.add(node12);
Node node3 = new Node();
node3.setName("财务部");
node3.setId(3);
node3.setPid(1);
data.add(node3);
NodeUtil nodeUtil = new NodeUtil();
List<Node> nodeList = nodeUtil.getChildNodes(data, 0);
System.out.println(nodeList);
}
/**
* 根据父节点的ID获取所有子节点
* @param list 分类表
* @param typeId 传入的父节点ID
* @return String
*/
public List<Node> getChildNodes(List<Node> list,int pid) {
List<Node> returnList = new ArrayList<Node>();
for (Iterator<Node> iterator = list.iterator(); iterator.hasNext();) {
Node t = (Node) iterator.next();
// 一、根据传入的某个父节点ID,遍历该父节点的所有子节点
if (t.getPid()==pid) {
recursionFn(list, t);
returnList.add(t);
}
}
return returnList;
}
/**
* 递归列表
* @param list
* @param TreeObject
*/
private void recursionFn(List<Node> list, Node t) {
List<Node> childList = getChildList(list, t);// 得到子节点列表
t.setNodes(childList);
for (Node tChild : childList) {
if (hasChild(list, tChild)) {// 判断是否有子节点
Iterator<Node> it = childList.iterator();
while (it.hasNext()) {
Node n = (Node) it.next();
recursionFn(list, n);
}
}
}
}
// 得到子节点列表
private List<Node> getChildList(List<Node> list, Node t) {
List<Node> tlist = new ArrayList<Node>();
Iterator<Node> it = list.iterator();
while (it.hasNext()) {
Node n = (Node) it.next();
if (n.getPid() == t.getId()) {
tlist.add(n);
}
}
return tlist;
}
// 判断是否有子节点
private boolean hasChild(List<Node> list, Node t) {
return getChildList(list, t).size() > 0 ? true : false;
}
}
递归遍历树
最新推荐文章于 2023-11-20 16:40:48 发布