List<object> list = new ArrayList();
//生成树
Map<String, TreeVo> nodeMap = buildTree(list);
// 获取所有根节点
List<TreeVo> roots = getRoots(nodeMap);
//排序
roots = roots.stream()
.sorted(Comparator.comparing(TreeVo::getOrderBy()))
.collect(Collectors.toList());
/**
* 生成树
* @param treeNodes
* @return
*/
public Map<String, TreeVo> buildTree(List<object> treeNodes) {
Map<String, TreeVo> nodeMap = new HashMap<>();
// 创建变更项目树记录列表
List<TreeVo> records = new ArrayList<>();
// 遍历变更项目列表,转换为树模型并添加到记录列表中
for (object node : treeNodes) {
TreeVo treeVo = new TreeVo(node);
// 将变更项目树模型添加到记录列表中
records.add(treeVo);
nodeMap.put(treeVo.getId(), treeVo);
}
for (TreeVo node : records) {
TreeVo parentNode = nodeMap.get(node.getParentId());
if (parentNode != null) {
parentNode.addChild(node);
}
}
return nodeMap;
}
/**
* 获取根节点
* @param nodeMap
* @return
*/
public List<TreeVo> getRoots(Map<String, TreeVo> nodeMap) {
return new ArrayList<>(nodeMap.values()).stream()
.filter(node -> node.getParentId() == null || node.getParentId().isEmpty())
.collect(Collectors.toList());
}
06-30
1467
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
02-06