树形结构如下图
测试类代码:
package com.zxq.tree_dom; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import java.util.*; public class Test { public static void main(String[] args) { List<Menu> list = new ArrayList<>(); Menu menu1 = new Menu(); menu1.setId("1"); menu1.setParentId("0"); menu1.setName("菜单1"); list.add(menu1); Menu menu2 = new Menu(); menu2.setId("2"); menu2.setParentId("0"); menu2.setName("菜单2"); list.add(menu2); Menu menu1_1 = new Menu(); menu1_1.setId("1_1"); menu1_1.setParentId("1"); menu1_1.setName("菜单1_1"); list.add(menu1_1); Menu menu1_1_1 = new Menu(); menu1_1_1.setId("1_1_1"); menu1_1_1.setParentId("1_1"); menu1_1_1.setName("菜单1_1_1"); list.add(menu1_1_1); Menu menu1_1_2 = new Menu(); menu1_1_2.setId("1_1_2"); menu1_1_2.setParentId("1_1"); menu1_1_2.setName("菜单1_1_2"); list.add(menu1_1_2); Menu menu1_1_3 = new Menu(); menu1_1_3.setId("1_1_3"); menu1_1_3.setParentId("1_1"); menu1_1_3.setName("菜单1_1_3"); list.add(menu1_1_3); Menu menu1_2 = new Menu(); menu1_2.setId("1_2"); menu1_2.setParentId("1"); menu1_2.setName("菜单1_2"); list.add(menu1_2); Menu menu2_1 = new Menu(); menu2_1.setId("2_1"); menu2_1.setParentId("2"); menu2_1.setName("菜单2_1"); list.add(menu2_1); //递归 long time1 = new Date().getTime(); List<Menu> menus = TreeUtils.getTreeList("0", list); long time2 = new Date().getTime(); System.out.println("耗时:"+(time2-time1)); JSONArray jsonArray= JSONArray.parseArray(JSON.toJSONString(menus)); System.out.println(jsonArray); System.out.println("循环次数:"+TreeUtils.i); // //非递归 // long time1 = new Date().getTime(); // List<Menu> treeList = TreeUtils.getTreeListByMap("0", list); // long time2 = new Date().getTime(); // System.out.println("耗时:"+(time2-time1)); // JSONArray jsonArray= JSONArray.parseArray(JSON.toJSONString(treeList)); // System.out.println(jsonArray); // System.out.println("循环次数:"+TreeUtils.i); } }