中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java樹結構stream工具類怎么用

發布時間:2022-03-18 09:04:33 來源:億速云 閱讀:254 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“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工具類怎么用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祁连县| 增城市| 抚松县| 白山市| 海门市| 讷河市| 鲜城| 巴马| 乐业县| 颍上县| 阿克苏市| 丰都县| 郧西县| 临西县| 吴忠市| 嘉善县| 白朗县| 怀安县| 临桂县| 南部县| 望谟县| 察哈| 翁牛特旗| 金阳县| 精河县| 台东县| 平利县| 于田县| 雅江县| 新兴县| 松阳县| 房产| 佛坪县| 安仁县| 宜春市| 廉江市| 兴海县| 惠来县| 盐边县| 淄博市| 上犹县|