1、实体类 Menu
public class Menu {
private String id;
private String title;
private String name;
private String pid;
private List<Menu> menus;
//省略 get、set方法
public Menu(String id, String title, String name, String pid) {
this.id = id; this.title = title; this.name = name; this.pid = pid;
}
}
2、测试类MenuTest
public class MenuTest {
public static void main(String[] args) {
List<Menu> list = new ArrayList<Menu>();
for (int i = 1; i <= 5; i++) {
Menu menu = new Menu(i + "", "标题" + i, "菜单" + i, (i - 1) + "");
list.add(menu);
} //添加数据
System.out.println(JSONUtil.toJsonStr(list));
System.out.println("-----------------------------------------------------------------------");
List<Menu> menuList=list.stream().filter(menu -> menu.getPid().equals("0")).peek(menu -> menu.setMenus(setChild(menu, list))) .collect(Collectors.toList());
System.out.println(JSONUtil.toJsonStr(menuList));
}
/** * 递归获取子菜单 */
public static List<Menu> setChild(Menu menu, List<Menu> list) {
List<Menu> menuList = list.stream().filter(m -> m.getPid().equals(menu.getId())).map(m -> { m.setMenus(setChild(m,list)); return m; }).collect(Collectors.toList());
return menuList;
}
}
没有回复内容