真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java怎么使用HashMap存取鍵值映射關(guān)系

本篇內(nèi)容介紹了“java怎么使用HashMap存取鍵值映射關(guān)系”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

專業(yè)從事成都網(wǎng)站制作、成都網(wǎng)站建設(shè),高端網(wǎng)站制作設(shè)計(jì),微信小程序,網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術(shù)團(tuán)隊(duì)竭力真誠服務(wù),采用H5建站+CSS3前端渲染技術(shù),成都響應(yīng)式網(wǎng)站建設(shè)公司,讓網(wǎng)站在手機(jī)、平板、PC、微信下都能呈現(xiàn)。建站過程建立專項(xiàng)小組,與您實(shí)時(shí)在線互動(dòng),隨時(shí)提供解決方案,暢聊想法和感受。

使用HashMap存取鍵值映射關(guān)系

簡(jiǎn)單來說,HashMap由數(shù)組和鏈表組成的,數(shù)組是HashMap的主體,鏈表則是主要為了解決哈希沖突而存在的。如果定位到的數(shù)組位置不含鏈表,那么查找、添加等操作很快,僅需一次尋址即可,其時(shí)間復(fù)雜度為O(1);如果定位到的數(shù)組包含鏈表,對(duì)于添加操作,其時(shí)間復(fù)雜度為O(n)——首先遍歷鏈表,存在即覆蓋,不存在則新增;對(duì)于查找操作來講,仍需要遍歷鏈表,然后通過key對(duì)象的equals方法逐一對(duì)比查找。從性能上考慮,HashMap中的鏈表出現(xiàn)越少,即哈希沖突越少,性能也就越好。所以,在日常編碼中,可以使用HashMap存取鍵值映射關(guān)系。

案例:給定菜單記錄列表,每條菜單記錄中包含父菜單標(biāo)識(shí)(根菜單的父菜單標(biāo)識(shí)為null),構(gòu)建出整個(gè)菜單樹。

/** 菜單DO類 */@Setter@Getter@ToStringpublic static class MenuDO {    /** 菜單標(biāo)識(shí) */
    private Long id;    /** 菜單父標(biāo)識(shí) */
    private Long parentId;    /** 菜單名稱 */
    private String name;    /** 菜單鏈接 */
    private String url;
}/** 菜單VO類 */@Setter@Getter@ToStringpublic static class MenuVO {    /** 菜單標(biāo)識(shí) */
    private Long id;    /** 菜單名稱 */
    private String name;    /** 菜單鏈接 */
    private String url;    /** 子菜單列表 */
    private List childList;
}/** 構(gòu)建菜單樹函數(shù) */public static List buildMenuTree(List menuList) {    // 檢查列表為空
    if (CollectionUtils.isEmpty(menuList)) {        return Collections.emptyList();
    }    // 依次處理菜單
    int menuSize = menuList.size();
    List rootList = new ArrayList<>(menuSize);
    Map menuMap = new HashMap<>(menuSize);    for (MenuDO menuDO : menuList) {        // 賦值菜單對(duì)象
        Long menuId = menuDO.getId();
        MenuVO menu = menuMap.get(menuId);        if (Objects.isNull(menu)) {
            menu = new MenuVO();
            menu.setChildList(new ArrayList<>());
            menuMap.put(menuId, menu);
        }
        menu.setId(menuDO.getId());
        menu.setName(menuDO.getName());
        menu.setUrl(menuDO.getUrl());        // 根據(jù)父標(biāo)識(shí)處理
        Long parentId = menuDO.getParentId();        if (Objects.nonNull(parentId)) {            // 構(gòu)建父菜單對(duì)象
            MenuVO parentMenu = menuMap.get(parentId);            if (Objects.isNull(parentMenu)) {
                parentMenu = new MenuVO();
                parentMenu.setId(parentId);
                parentMenu.setChildList(new ArrayList<>());
                menuMap.put(parentId, parentMenu);
            }            
            // 添加子菜單對(duì)象
            parentMenu.getChildList().add(menu);
        } else {            // 添加根菜單對(duì)象
            rootList.add(menu);
        }
    }    // 返回根菜單列表
    return rootList;
}

“java怎么使用HashMap存取鍵值映射關(guān)系”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


分享標(biāo)題:java怎么使用HashMap存取鍵值映射關(guān)系
本文地址:http://weahome.cn/article/pdocic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部