Class Trees
java.lang.Object
tech.riemann.nif.utils.tree.Trees
树操作工具类,提供树形结构的构建、遍历、打平和排序等功能
支持泛型,可以处理各种类型的树形数据结构
主要功能包括: 1. 将列表数据转换为树形结构 2. 将树形结构打平为列表 3. 支持前序、后序和层序遍历 4. 支持对树节点进行排序
- Author:
- kerbores(kerbores@riemann.tech)
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <E> List<E> 将树打平成liststatic <E> voidforLevelOrder(List<E> tree, Consumer<E> consumer, Function<E, List<E>> getSubChildren) 层序遍历static <E> voidforPostOrder(List<E> tree, Consumer<E> consumer, Function<E, List<E>> getSubChildren) 后序遍历static <E> voidforPreOrder(List<E> tree, Consumer<E> consumer, Function<E, List<E>> getSubChildren) 前序遍历static <E> List<E> makeTree(List<E> list, Predicate<E> rootCheck, BiPredicate<E, E> parentCheck, BiConsumer<E, List<E>> setSubChildren) 将list合成树static <E> List<E> sort(List<E> tree, Comparator<? super E> comparator, Function<E, List<E>> getChildren) 对树所有子节点按comparator排序
-
Constructor Details
-
Trees
public Trees()
-
-
Method Details
-
makeTree
public static <E> List<E> makeTree(List<E> list, Predicate<E> rootCheck, BiPredicate<E, E> parentCheck, BiConsumer<E, List<E>> setSubChildren) 将list合成树- Type Parameters:
E- 泛型实体对象- Parameters:
list- 需要合成树的ListrootCheck- 判断E中为根节点的条件,如:x->x.getPId()==-1L , x->x.getParentId()==null,x->x.getParentMenuId()==0parentCheck- 判断E中为父节点条件,如:(x,y)->x.getId().equals(y.getPId())setSubChildren- E中设置下级数据方法,如:Menu::setSubMenus- Returns:
- 合成好的树
-
flat
-
forPreOrder
-
forLevelOrder
-
forPostOrder
-
sort
public static <E> List<E> sort(List<E> tree, Comparator<? super E> comparator, Function<E, List<E>> getChildren) 对树所有子节点按comparator排序- Type Parameters:
E- 泛型实体对象- Parameters:
tree- 需要排序的树comparator- 排序规则Comparator,如:Comparator.comparing(MenuVo::getRank)按Rank正序 ,(x,y)->y.getRank().compareTo(x.getRank()),按Rank倒序getChildren- 获取下级数据方法,如:MenuVo::getSubMenus- Returns:
- 排序好的树
-