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;
}
构建Tree工具类
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 前端自动化构建工具 webpack 是一个打包模块化的js的工具,在webpack里一切文件都是模块,通过load...
- 在之前的学习中,我写过一篇关于字符串格式化的,就主要设计到了时间以及日期的各种格式化显示的设置,其主要时通过Str...
- 缘起 最近公司内部想搭建一个私有的 npm 仓库,用于将平时用到次数相当频繁的工具或者组件独立出来,方便单独管理,...
- 一、背景 最近的开发工作用到“树”模型比较多,例如节点树、权限树等。每一个实体都有自己特殊的字段,所以最初的解决方...