构建Tree工具类

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("/");
    list.add("/java");
    list.add("/java/source/ArrayList");
    list.add("/javascript");

    Iterator<String> iterator = list.iterator();
    Path root = toTree(iterator);
    System.out.println(JSON.toJSONString(root.getChildren(), SerializerFeature.PrettyFormat));
}

static Path toTree(Iterator<String> iterator) {
    Path root = new Path("", new ArrayList<>(), new HashMap<>());
    while (iterator.hasNext()) {
        String next = iterator.next();
        String[] arr = next.split("/");
        Path parent = root;
        Map<String, Path> map = parent.getChildrenMap();
        for (int i = 1, len = arr.length; i < len; i++) {
            String p = arr[i];
            Path path = map.get(p);
            if (path != null) {
                parent = path;
                continue;
            }
            path = new Path(p, new ArrayList<>(), new HashMap<>());
            parent.getChildren().add(path);
            parent.getChildrenMap().put(p, path);
            parent = path;
        }
    }
    return root;
}

@Data
@NoArgsConstructor
@AllArgsConstructor
static class Path {
    private String name;
    private List<Path> children;
    @JsonIgnore
    private Map<String, Path> childrenMap;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容