java实现树的组装
public List assembleTrees(Collection trees) {
if (CollectionUtils.isEmpty(trees)) {
return Collections.emptyList();
}
// 构建树主键/实例映射表,并初始化树的子节点集合
Map, MeterDeviceVO> mapping = trees.stream().peek(tree -> tree.setChildren(new LinkedList<>()))
.collect(Collectors.toMap(MeterDeviceVO::getId, t -> t, (o, n) -> n));
// 查找并关联树节点,返回所有没有父节点的树
return trees.stream().filter(tree -> {
MeterDeviceVO parent = ifNull(tree.getParentId(), mapping::get);
if (parent != null) {
parent.getChildren().add(tree);
}
return Objects.isNull(parent);
}).collect(Collectors.toList());
}



