java List集合转树形结构TerrList 构建List集合为树形结构 工具类
适用大数据量,超实用,速度超快
public class TreeUtil {
public static <T, V, K> List<T> groupTree(List<T> dataList, Function<? super T, ? extends K> classifier, Item<T, V> tvItem, Children<T> children, V v) {
if (!CollectionUtils.isEmpty(dataList)) {
Map<K, List<T>> groupMap = dataList.stream().collect(Collectors.groupingBy(classifier));
List<T> vos = groupMap.get(v);
setChildren(vos, groupMap, tvItem, children);
return vos;
} else {
return new ArrayList<>();
}
}
private static <T, V, K> void setChildren(List<T> vos, Map<K, List<T>> groupMap, Item<T, V> tvItem, Children<T> children) {
if (!CollectionUtils.isEmpty(vos)) {
vos.stream().forEach(item -> {
List<T> list = groupMap.get(tvItem.val(item));
setChildren(list, groupMap, tvItem, children);
children.children(item, list);
});
}
}
public interface Item<T, V> {
V val(T t);
}
public interface Children<T> {
void children(T t, List<T> list);
}
}