使用hutool获取所有下级节点
@Slf4j
public class MainTest {
public static void main(String[] args) throws IOException {
List<Tree<Long>> list = new ArrayList<>();
Tree<Long> t1 = new Tree<>();
t1.setId(1L);
t1.setParentId(0L);
t1.setName("01");
list.add(t1);
Tree<Long> t11 = new Tree<>();
t11.setId(11L);
t11.setParentId(1L);
t11.setName("11");
list.add(t11);
Tree<Long> t111 = new Tree<>();
t111.setId(111L);
t111.setParentId(11L);
t111.setName("t111");
list.add(t111);
Tree<Long> t12 = new Tree<>();
t12.setId(12L);
t12.setParentId(1L);
t12.setName("12");
list.add(t12);
Tree<Long> t1201 = new Tree<>();
t1201.setId(1201L);
t1201.setParentId(12L);
t1201.setName("1201");
list.add(t1201);
Tree<Long> t1202 = new Tree<>();
t1202.setId(1202L);
t1202.setParentId(12L);
t1202.setName("1202");
list.add(t1202);
Tree<Long> t2 = new Tree<>();
t2.setId(2L);
t2.setName("02");
t2.setParentId(0L);
list.add(t2);
Tree<Long> t201 = new Tree<>();
t201.setId(201L);
t201.setName("201");
t201.setParentId(2L);
list.add(t201);
List<Tree<Long>> treeList = TreeUtil.build(list, 0L, (treeNode, tree) -> {
tree.setId(treeNode.getId());
tree.setParentId(treeNode.getParentId());
tree.setWeight(treeNode.getId());
tree.setName(treeNode.getName());
});
System.out.println(gettJsonString(treeList));
System.out.println("=========");
List<Tree<Long>> l2 = getAllChildren(treeList, 1L);
System.out.println(gettJsonString(l2));
System.out.println("-------");
List<Tree<Long>> l3 = getAllChildren(treeList, 2L);
System.out.println(gettJsonString(l3));
System.out.println("-------");
List<Tree<Long>> l4 = getAllChildren(treeList, 11L);
System.out.println(gettJsonString(l4));
System.out.println("-------");
List<Tree<Long>> l5 = getAllChildren(treeList, 12L);
System.out.println(gettJsonString(l5));
System.out.println("-------");
}
private static <T> List<Tree<T>> getAllChildren(List<Tree<T>> treeList, T pId) {
for (Tree<T> tree : treeList) {
Tree<T> node = TreeUtil.getNode(tree, pId);
if (node != null) {
List<Tree<T>> children = new ArrayList<>();
getAllChildren(node, children);
return children;
}
}
return new ArrayList<>();
}
/**
* 获取所有下节点
*/
private static <T> void getAllChildren(Tree<T> tree, List<Tree<T>> children) {
List<Tree<T>> subChildren = tree.getChildren();
if (!CollectionUtils.isEmpty(subChildren)) {
children.addAll(subChildren);
for (Tree<T> subChild : subChildren) {
getAllChildren(subChild, children);
}
}
}
private static <T> String gettJsonString(T t) {
return JSON.toJSONString(t, SerializerFeature.DisableCircularReferenceDetect);
}
}
下一篇:
一台机器如何启动多个nacos
