树结构数据

代码
Stack<List<ProjectDto>> listStack = new Stack<>();
// 存储层级数据
Map<Integer, List<ProjectDto>> childrenMap = new HashMap<>();
// 入栈
listStack.push(projectDtoList1);
// 层级号
int count = 0;
// 项目不为空时
while (!listStack.isEmpty()) {
// 出栈
List<ProjectDto> projectDtoList2 = listStack.pop();
// 存储当前层级下的子节点
List<ProjectDto> projectDtoArrayList3 = new ArrayList<>();
for (int i = 0; i < projectDtoList2.size(); i++) {
if (!projectDtoList2.get(i).getParentId().equals("0")) {
if (projectDtoList2.get(i) != null) {
// 添加所有的子节点
projectDtoArrayList3.addAll(projectDtoList2.get(i).getChildren());
}
} else {
projectDtoArrayList3.addAll(projectDtoList2.get(i).getChildren());
}
// 循环完毕,添加当前节点数据
if (i == projectDtoList2.size() - 1) {
childrenMap.put(count++, projectDtoList2);
}
}
if (projectDtoArrayList3.size() != 0 && projectDtoArrayList3 != null) {
// 获取子节点入栈
listStack.push(projectDtoArrayList3);
}
}
map.put("Level", childrenMap);
数据

这篇博客介绍了如何使用栈数据结构配合HashMap来遍历和组织具有层级关系的树形数据,如项目DTO列表。通过不断入栈和出栈子节点,将同一层级的项目Dto归为一组,并存储到childrenMap中,实现层级数据的整理。整个过程确保了数据的正确组织,适用于多级嵌套的数据结构处理。

313

被折叠的 条评论
为什么被折叠?



