public static void main(String args[]) {
List<Menu> menus = Arrays.asList(
new Menu(1, "根节点", 0),
new Menu(2, "子节点1", 1),
new Menu(3, "子节点1.1", 2),
new Menu(4, "子节点1.2", 2),
new Menu(5, "子节点1.3", 2),
new Menu(6, "子节点2", 1),
new Menu(7, "子节点2.1", 6),
new Menu(8, "子节点2.2", 6),
new Menu(9, "子节点2.2.1", 7),
new Menu(10, "子节点2.2.2", 7),
new Menu(11, "子节点3", 1),
new Menu(12, "子节点3.1", 11)
);
//获取父节点
List<Menu> collect = menus.stream().filter(m -> m.getParentId() == 0).map(
(m) -> {
m.setChildList(getChilds(m, menus));
return m;
}).collect(Collectors.toList());
System.out.println(JSON.toJSON(collect));
}
private static List<Menu> getChilds(Menu root, List<Menu> all) {
List<Menu> children = all.stream().filter(m -> Objects.equals(m.getParentId(), root.getId())).map((m) -> {
m.setChildList(getChilds(m, all));
return m;
}).collect(Collectors.toList());
return children;
}
利用流生成树