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工具類
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- 前端自動化構建工具 webpack 是一個打包模塊化的js的工具,在webpack里一切文件都是模塊,通過load...
- 在之前的學習中,我寫過一篇關于字符串格式化的,就主要設計到了時間以及日期的各種格式化顯示的設置,其主要時通過Str...
- 緣起 最近公司內部想搭建一個私有的 npm 倉庫,用于將平時用到次數相當頻繁的工具或者組件獨立出來,方便單獨管理,...
- 一、背景 最近的開發工作用到“樹”模型比較多,例如節點樹、權限樹等。每一個實體都有自己特殊的字段,所以最初的解決方...