Tree结构对象转Map集合并平铺所有子节点及间接子节点 Key每个父ID Value是下级及间接下级节点直到叶子节单
对象类:
public class OrganizationsTree {
private Integer id;
private String label;
private List<OrganizationsTree> children;
public OrganizationsTree(Integer id, String label) {
this.id = id;
this.label = label;
}
}
转map逻辑 :
//tree转map 并平铺所以子节点及间接子节点
public static Map<Integer, List<OrganizationsTree>> convertToMap(OrganizationsTree organizationsTree) {
Map<Integer, List<OrganizationsTree>> organizationsMap = new HashMap<>();
if (organizationsTree != null ) {
organizationsMap.put(organizationsTree.getId(), new ArrayList<>());
populateMap(organizationsTree,organizationsMap);
}
return organizationsMap;
}
private static void populateMap(OrganizationsTree node, Map<Integer, List<OrganizationsTree>> organizationsMap) {
Integer parentId = node.getId();
// 获取父节点的子节点列表,如果不存在则创建一个新列表
List<OrganizationsTree> childrenList = organizationsMap.getOrDefault(parentId, new ArrayList<>());
// 将当前节点添加到父节点的子节点列表中
childrenList.add(node);
// 确保列表被更新
organizationsMap.put(parentId, childrenList);
// 递归处理当前节点的所有直接子节点
List<OrganizationsTree> children = node.getChildren();
if (children == null) {
return;
}
for (OrganizationsTree child : children) {
// 添加当前子节点,并递归处理其子节点
populateMap(child, organizationsMap);
// 将当前子节点及其所有间接子节点添加到父节点的子节点列表中
childrenList.addAll(organizationsMap.getOrDefault(child.getId(), new ArrayList<>()));
}
}

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



