java 线型集合转树形集合 o(n)
public static List<Zone> buildTree3(List<Zone> zoneList) {
Map<String, List<Zone>> zoneByParentIdMap = zoneList.stream().collect(Collectors.groupingBy(Zone::getParentId));
zoneList.forEach(zone->zone.children = zoneByParentIdMap.get(zone.id));
return zoneList.stream().filter(v -> v.parentId.equals("0")).collect(Collectors.toList());
}
本文介绍了一种高效的算法,用于将Java中的线性集合转换为树形集合,复杂度仅为O(n)。通过使用Stream API和Collectors.groupingBy()方法,首先按父ID对节点进行分组,然后遍历原始列表设置每个节点的子节点,最后筛选出根节点返回。此方法避免了重复查找,提高了构建树形结构的效率。
785

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



