您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“java樹結構stream工具類怎么用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“java樹結構stream工具類怎么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
菜單實體類
package com.example.demo.entity; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; @Data @Builder @AllArgsConstructor @NoArgsConstructor public class Menu { /** * id */ public Integer id; * 名稱 public String name; * 父id ,根節點為0 public Integer parentId; * 子節點信息 public List<Menu> childList; public Menu(Integer id, String name, Integer parentId) { this.id = id; this.name = name; this.parentId = parentId; } }
生成樹結構工具類
package com.example.demo.util; import cn.hutool.json.JSONUtil; import com.example.demo.entity.Menu; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; public class TreeUtil { /** * 遞歸查詢子節點 * * @param root 根節點 * @param all 所有節點 * @return 根節點信息 */ public static List<Menu> getChildrens(Menu root, List<Menu> all) { List<Menu> children = all.stream().filter(m -> { return Objects.equals(m.getParentId(), root.getId()); }).map( (m) -> { m.setChildList(getChildrens(m, all)); return m; } ).collect(Collectors.toList()); return children; } * @param parentId 父節點id * @param menus 菜單集合 * @return 返回id等于parentId的子孫節點樹結構 (不包含id等于parentId的節點) public static List<Menu> getTree(Integer parentId, List<Menu> menus) { //獲取父節點 List<Menu> tree = menus.stream().filter(m -> Objects.equals(parentId,m.getParentId())).map( m.setChildList(getChildrens(m, menus)); return tree; public static void main(String... args) { //模擬從數據庫查詢出來 List<Menu> menus = Arrays.asList( new Menu(1, "0-1", 0), new Menu(2, "0-1-2", 1), new Menu(3, "0-1-2-3", 2), new Menu(4, "0-1-2-4", 2), new Menu(5, "0-1-2-5", 2), new Menu(6, "0-6", 0), new Menu(7, "0-6-7", 6), new Menu(8, "0-6-8", 6), new Menu(9, "0-6-7-9", 7), new Menu(10, "0-6-7-10", 7), new Menu(11, "0-11", 0), new Menu(12, "0-11-12", 11) ); List<Menu> tree = getTree(1,menus); System.out.println("-------轉json輸出結果-------"); System.out.println(JSONUtil.parseArray(tree).toString()); }
讀到這里,這篇“java樹結構stream工具類怎么用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。