亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

虹口区| 蒙自县| 河间市| 盐城市| 梁山县| 甘泉县| 延庆县| 泽普县| 永仁县| 湘阴县| 二连浩特市| 玛沁县| 阳春市| 万年县| 安顺市| 苏尼特右旗| 武川县| 县级市| 镇平县| 涿鹿县| 高淳县| 射阳县| 虞城县| 偃师市| 渭南市| 读书| 遵化市| 突泉县| 东辽县| 金山区| 闵行区| 虹口区| 承德市| 黄大仙区| 从江县| 永兴县| 任丘市| 扎囊县| 唐河县| 静乐县| 惠来县|