Heim > Java > javaLernprogramm > Hauptteil

So verwenden Sie HashMap für den Zugriff auf Schlüssel-Wert-Zuordnungsbeziehungen in Java

WBOY
Freigeben: 2023-05-10 11:02:14
nach vorne
1242 Leute haben es durchsucht

Verwenden Sie HashMap, um auf Schlüsselwert-Zuordnungsbeziehungen zuzugreifen. Vereinfacht gesagt besteht HashMap aus Arrays und verknüpften Listen. Arrays sind der Hauptteil von HashMap, und verknüpfte Listen dienen hauptsächlich der Lösung von Hash-Konflikten. Wenn die gefundene Array-Position keine verknüpfte Liste enthält, sind Such-, Additions- und andere Operationen sehr schnell und erfordern nur eine Adressierung. Die Zeitkomplexität beträgt O(1), wenn das lokalisierte Array eine verknüpfte Liste enthält Die Zeitkomplexität beträgt O(1). Durchlaufen Sie zuerst die verknüpfte Liste, überschreiben Sie sie, wenn sie nicht vorhanden ist, und fügen Sie sie für den Suchvorgang hinzu Verknüpfte Liste, dann vergleichen und durchsuchen Sie nacheinander die Methode equal des Schlüsselobjekts. Aus Leistungssicht ist die Leistung umso besser, je weniger verknüpfte Listen in HashMap vorhanden sind, dh je weniger Hash-Konflikte vorhanden sind. Daher können Sie bei der täglichen Codierung HashMap verwenden, um auf Schlüsselwert-Zuordnungsbeziehungen zuzugreifen.

Fall: Bei einer gegebenen Liste von Menüdatensätzen enthält jeder Menüdatensatz die Kennung des übergeordneten Menüs (die Kennung des übergeordneten Menüs des Stammmenüs ist null), und der gesamte Menübaum wird erstellt.

/** 菜单DO类 */@Setter@Getter@ToStringpublic static class MenuDO {    /** 菜单标识 */
    private Long id;    /** 菜单父标识 */
    private Long parentId;    /** 菜单名称 */
    private String name;    /** 菜单链接 */
    private String url;
}/** 菜单VO类 */@Setter@Getter@ToStringpublic static class MenuVO {    /** 菜单标识 */
    private Long id;    /** 菜单名称 */
    private String name;    /** 菜单链接 */
    private String url;    /** 子菜单列表 */
    private List<MenuVO> childList;
}/** 构建菜单树函数 */public static List<MenuVO> buildMenuTree(List<MenuDO> menuList) {    // 检查列表为空
    if (CollectionUtils.isEmpty(menuList)) {        return Collections.emptyList();
    }    // 依次处理菜单
    int menuSize = menuList.size();
    List<MenuVO> rootList = new ArrayList<>(menuSize);
    Map<Long, MenuVO> menuMap = new HashMap<>(menuSize);    for (MenuDO menuDO : menuList) {        // 赋值菜单对象
        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());        // 根据父标识处理
        Long parentId = menuDO.getParentId();        if (Objects.nonNull(parentId)) {            // 构建父菜单对象
            MenuVO parentMenu = menuMap.get(parentId);            if (Objects.isNull(parentMenu)) {
                parentMenu = new MenuVO();
                parentMenu.setId(parentId);
                parentMenu.setChildList(new ArrayList<>());
                menuMap.put(parentId, parentMenu);
            }            
            // 添加子菜单对象
            parentMenu.getChildList().add(menu);
        } else {            // 添加根菜单对象
            rootList.add(menu);
        }
    }    // 返回根菜单列表
    return rootList;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo verwenden Sie HashMap für den Zugriff auf Schlüssel-Wert-Zuordnungsbeziehungen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage