List<TreeNode> trees = bmxxService.selectTreeByUser(1L, 0L);
log.info("selectBmxxTreeByUserTest:{}",trees);
HashMap<Long, TreeNode> collect = trees.stream().collect(HashMap::new, (map, node) -> {
map.put(node.getId(), node);
}, HashMap::putAll);
List<SelectBmxxTreeListRespDto> treeList = new ArrayList<>();
trees.forEach( treeNode -> {
Long pId = treeNode.getParentId();
// 如果是不是根节点,则找寻其父节点,并将该节点设置为其孩子节点
if(pId != 0L){
if(collect.containsKey(pId)){
TreeNode bmxxDto = collect.get(pId);
List<TreeNode> child = bmxxDto.getChild();
if(child == null){
child = new ArrayList<>();
}
child.add(treeNode);
bmxxDto.setChild(child);
}else {
// 若没有找到父节点,则设置为根节点
treeList.add(treeNode);
}
}else {
treeList.add(treeNode);
}
});
JAVA O(1)时间复杂度组装树
于 2022-12-05 16:37:43 首次发布