亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java有序的Map LinkedHashMap用法詳解

 更新時間:2024年01月30日 11:17:33   作者:野猿新一  
LinkedHashMap是Java提供的一個集合類,它繼承自HashMap,并在HashMap基礎上維護一條雙向鏈表,本文給大家介紹java 有序的Map LinkedHashMap簡介,感興趣的朋友一起看看吧

LinkedHashMap

1.定義:

LinkedHashMap是HashMap和雙向鏈表的合二為一,即一個將所有Entry節(jié)點鏈入一個雙向鏈表的HashMap(LinkedHashMap = HashMap + 雙向鏈表)

LinkedHashMap和HashMap是Java Collection Framework 的重要成員,也是Map族(如下圖所示)
LinkedHashMap是HashMap的子類(擁有HashMap的所有特性)
LinkedHashMap和HashMap最多只允許一條Entry的鍵為Null(多條會覆蓋),但允許多條Entry的值為Null
LinkedHashMap 也是 Map 的一個非同步的實現(xiàn)
LinkedHashMap很好的支持LRU算法
HashMap是無序的,LinkedHashMap通過維護一個額外的雙向鏈表保證了迭代順序
迭代順序可以是插入順序,也可以是訪問順序(即根據(jù)鏈表中元素的順序可以將LinkedHashMap分為:保持插入順序的LinkedHashMap和保持訪問順序的LinkedHashMap,其中LinkedHashMap的默認實現(xiàn)是按插入順序排序的)

LinkedHashMap簡介

LinkedHashMap是Java提供的一個集合類,它繼承自HashMap,并在HashMap基礎上維護一條雙向鏈表,使得具備如下特性:

支持遍歷時會按照插入順序有序進行迭代。
支持按照元素訪問順序排序,適用于封裝LRU緩存工具。
因為內(nèi)部使用雙向鏈表維護各個節(jié)點,所以遍歷時的效率和元素個數(shù)成正比,相較于和容量成正比的HashMap來說,迭代效率會高很多。
LinkedHashMap邏輯結構如下圖所示,它是在HashMap基礎上在各個節(jié)點之間維護一條雙向鏈表,使得原本散列在不同bucket上的節(jié)點、鏈表、紅黑樹有序關聯(lián)起來。

下面看下java 有序的Map LinkedHashMap簡介,內(nèi)容如下所示:

無序的HashMap

我們知道HashMap是無需的,數(shù)據(jù)并不是按我們插入的順序排序的,我們可以驗證下

public class Test6 {
    public static void main(String[] args) {
        Map<String, String> hashMap = new HashMap<String, String>();
        hashMap.put("name1", "value1");
        hashMap.put("name2", "value2");
        hashMap.put("name3", "value3");
        Set<Entry<String, String>> set = hashMap.entrySet();
        Iterator<Entry<String, String>> iterator = set.iterator();
        while(iterator.hasNext()) {
            Entry<String, String> entry = iterator.next();
            String key = (String) entry.getKey();
            String value = (String) entry.getValue();
            System.out.println("key:" + key + ", value:" + value);
        }
    }
}

 可以看到輸出結果并不是按數(shù)據(jù)插入的順序的

key:name3, value:value3
key:name2, value:value2
key:name1, value:value1

有序的LinkedHashMap

要想實現(xiàn)有序的Map,我們可以用LinkedHashMap,下面驗證一下,把原來代碼的HashMap替換成LinkedHashMap

public class Test6 {
    public static void main(String[] args) {
        Map<String, String> hashMap = new LinkedHashMap<String, String>();
        hashMap.put("name1", "value1");
        hashMap.put("name2", "value2");
        hashMap.put("name3", "value3");
        Set<Entry<String, String>> set = hashMap.entrySet();
        Iterator<Entry<String, String>> iterator = set.iterator();
        while(iterator.hasNext()) {
            Entry<String, String> entry = iterator.next();
            String key = (String) entry.getKey();
            String value = (String) entry.getValue();
            System.out.println("key:" + key + ", value:" + value);
        }
    }
}

可以看到輸出結果為我們插入的順序 

key:name1, value:value1
key:name2, value:value2
key:name3, value:value3

到此這篇關于java 有序的Map LinkedHashMap簡介的文章就介紹到這了,更多相關java Map LinkedHashMap內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 手把手教你設置IntelliJ IDEA 的彩色代碼主題的圖文教程

    手把手教你設置IntelliJ IDEA 的彩色代碼主題的圖文教程

    本文給出一系列 IntelliJ IDEA 代碼的彩色主題,感興趣的朋友一起看看吧
    2018-01-01
  • 詳解在IDEA中使用MyBatis Generator逆向工程生成代碼

    詳解在IDEA中使用MyBatis Generator逆向工程生成代碼

    這篇文章主要介紹了詳解在IDEA中使用MyBatis Generator逆向工程生成代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Java多線程回調(diào)方法實例解析

    Java多線程回調(diào)方法實例解析

    這篇文章主要介紹了Java多線程回調(diào)方法實例解析,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot整合HikariCP數(shù)據(jù)庫連接池方式

    SpringBoot整合HikariCP數(shù)據(jù)庫連接池方式

    這篇文章主要介紹了SpringBoot整合HikariCP數(shù)據(jù)庫連接池方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Mac安裝多個JDK并實現(xiàn)動態(tài)切換

    Mac安裝多個JDK并實現(xiàn)動態(tài)切換

    有時候我們有多個項目需要使用多個版本JDK,本文主要介紹了Mac安裝多個JDK并實現(xiàn)動態(tài)切換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • IDEA部署JavaWeb項目到Tomcat服務器的方法

    IDEA部署JavaWeb項目到Tomcat服務器的方法

    這篇文章主要介紹了IDEA部署JavaWeb項目到Tomcat服務器的方法,本文給大家介紹的非常詳細,感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-06-06
  • SpringBoot自動配置特點與原理詳細分析

    SpringBoot自動配置特點與原理詳細分析

    這篇文章主要介紹了SpringBoot自動配置原理分析,SpringBoot是我們經(jīng)常使用的框架,那么你能不能針對SpringBoot實現(xiàn)自動配置做一個詳細的介紹。如果可以的話,能不能畫一下實現(xiàn)自動配置的流程圖。牽扯到哪些關鍵類,以及哪些關鍵點
    2022-08-08
  • Java9新特性Module模塊化編程示例演繹

    Java9新特性Module模塊化編程示例演繹

    這篇文章主要為大家介紹了Java9新特性Module模塊化編程的示例演繹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-03-03
  • Java接口測試之日志框架Logback的具體使用

    Java接口測試之日志框架Logback的具體使用

    本文主要介紹了Java接口測試之日志框架Logback的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java中MyBatis傳入?yún)?shù)parameterType問題

    Java中MyBatis傳入?yún)?shù)parameterType問題

    這篇文章主要介紹了Java中MyBatis傳入?yún)?shù)parameterType問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論