package com.bjtdba.utils;

public class TreeUtile {
//
//    /**
//     * 树节点组装，自动关联树节点并返回根节点列表
//     *
//     * @param trees 树对象实例列表
//     * @param <T>   树对象类型
//     * @return 树根节点列表
//     */
//    public static <T extends Tree<?, T>> List<T> assembleTrees(Collection<T> trees) {
//        if (CollectionUtils.isEmpty(trees)) {
//            return Collections.emptyList();
//        }
//
//        // 构建树主键/实例映射表，并初始化树的子节点集合
//        Map<?, T> mapping = trees.stream().peek(tree -> tree.setChildren(new LinkedList<>()))
//                .collect(Collectors.toMap(Tree::getId, t -> t, (o, n) -> n));
//
//        // 查找并关联树节点，返回所有没有父节点的树
//        return trees.stream().filter(tree -> {
//            T parent = ifNull(tree.getParentId(), mapping::get);
//            if (parent != null) {
//                parent.getChildren().add(tree);
//            }
//            return Objects.isNull(parent);
//        }).collect(Collectors.toList());
//    }
//
//
//    /**
//     * 返回不为空的对象（如果第一个对象为空，则返回第二个对象）
//     *
//     * @param object   目标对象
//     * @param function 目标对象方法
//     * @param <T>      目标对象类型泛型
//     * @param <R>      返回对象类型泛型
//     * @return 返回对象
//     */
//    public static <T, R> R ifNull(T object, Function<T, R> function) {
//        return object == null || function == null ? null : function.apply(object);
//    }




}
