數組生成樹形結構


java版本:

 1 /**
 2      * 通過集合方式生成樹
 3      * @param list
 4      * @return
 5      */
 6     public static Map<String, Object> getTreeByColl(List<Menu> list) {
 7         Map<String, Object> resmap=new HashMap<>();
 8         Map<Integer, Menu> map;
 9         List<Menu> treelist= new ArrayList<>();
10 
11         if (null==list||list.isEmpty()){
12             return null;
13         }
14         map = list.stream().collect(Collectors.toMap(Menu::getId, a -> a,(k1, k2)->k1));
15         /*List<Map.Entry<Integer, Menu>> listMap = new ArrayList<Map.Entry<Integer, Menu>>(map.entrySet());
16         Collections.sort(listMap, new Comparator<Map.Entry<Integer, Menu>>() {
17             public int compare(Map.Entry<Integer, Menu> o1, Map.Entry<Integer, Menu> o2) {
18                 return o2.getKey().compareTo(o1.getKey());
19             }
20         });*/
21         // 將list集合對象轉換為json的字符串
22         // 如果id是父級的話就放入tree中treelist
23         for (Menu menu : list) {
24             if (null==map.get(menu.getParId())) {
25                 treelist.add(menu);
26             } else {
27                 // 子級通過父id獲取到父級的類型
28                 Menu parent = map.get(menu.getParId());
29                 // 父級獲得子級,再將子級放到對應的父級中
30                 parent.addChildren(menu);
31             }
32         }
33 
34 
35         resmap.put("data",treelist);
36         return resmap;
37     }

js版本:

  const nest = (items, id = null, link = 'parent_id') => items
    . filter(item => item[link] === id)
    .map(item => ({ ...item, children: nest(items, item.id) }));

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM