最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Java中的LinkedHashSet哈希鏈表

 更新時間:2023年09月04日 08:44:51   作者:橙子  
這篇文章主要介紹了淺談Java中的LinkedHashSet哈希鏈表,LinkedHashSet 是 Java 中的一個集合類,它是 HashSet 的子類,并實(shí)現(xiàn)了 Set 接口,與 HashSet 不同的是,LinkedHashSet 保留了元素插入的順序,并且具有 HashSet 的快速查找特性,需要的朋友可以參考下

HashSet哈希鏈表

Map、Set集合存放是無序的,然而LinkedHashSet和LinkedHashMap等集合卻有序

原因:LinkedHashSet與LinkedHashMap底層是通過雙向鏈表來實(shí)現(xiàn)排序的。

雙向鏈表里面的數(shù)據(jù)在邏輯上的存儲是連續(xù)的,連續(xù)自然也就有順序。

有序的原因關(guān)鍵在LinkedHashMap的Node 節(jié)點(diǎn)上。

LinkedHashMap 繼承自HashMap 并且實(shí)現(xiàn)了Map接口。

源碼如下:

/**
HashMap.Node subclass for normal LinkedHashMap entries.
*/
static class Entry<K,V> extends HashMap.Node<K,V> {
    Entry<K,V> before, after;
    Entry(int hash, K key, V value, Node<K,V> next) {
        super(hash, key, value, next);
    }
}

可以看到LinkedHashMap.Entry 繼承自HashMap.Node 除了Node 本身有的幾個屬性外,額外增加了before after 用于指向前一個Entry 后一個Entry。

也就是說,元素之間維持著一條總的鏈表數(shù)據(jù)結(jié)構(gòu)。正式因?yàn)檫@個鏈表才保證了LinkedHashMap的有序性。

LinkedHashSet集合也是根據(jù)元素hashCode值來決定元素存儲位置,但它同時使用鏈表維護(hù)元素的次序,這樣使得元素看起來是以插入的順序保存的。

也就是說,當(dāng)遍歷LinkedHashSet集合里元素時,HashSet將會按元素的添加順序來訪問集合里的元素,因此LinkedHashSet可以保證元素按插入順序輸出。

而Set對每個對象只接受一次,里面的值不允許重復(fù),是無序的數(shù)據(jù)結(jié)構(gòu);

LinkeHashSet是set集合的一個實(shí)現(xiàn),具有set集合不重復(fù)的特點(diǎn),同時具有可預(yù)測的迭代順序,即輸入順序。

這種雙鏈表的結(jié)構(gòu)一條用于儲存元素,一條用于記錄順序。

而Map Set集合內(nèi)是單鏈表或稀疏數(shù)組,各元素之間并沒有維持一條總的鏈表結(jié)構(gòu),所以Map和Set是無序的

LinkedHashSet的4種構(gòu)造函數(shù):

  1. 第一種構(gòu)造函數(shù)初始化一個空的LinkedHashSet: LinkedHashSet( );
  2. 第二種構(gòu)造函數(shù)使用Collection元素集初始化LinkedHashSet: LinkedHashSet(Collection c);
  3. 第三種構(gòu)造函數(shù)用給定的容量初始化LinkedHashSet: LinkedHashSet(int capacity);
  4. 第四種構(gòu)造函數(shù)通過傳入的容量和填充比初始化LinkedHashSet: LinkedHashSet(int capacity, float fillRatio);

在這里插入圖片描述

運(yùn)行結(jié)果:

在這里插入圖片描述

這兩斷代碼我們可以得出:LinkedHashSet 底層采用雙向鏈表實(shí)現(xiàn),可以保證元素的插入順序,又因?yàn)槭荋ashSet的子類,所以插入的元素不能重復(fù)。

到此這篇關(guān)于淺談Java中的LinkedHashSet哈希鏈表的文章就介紹到這了,更多相關(guān)Java的LinkedHashSet內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mybatis-Plus最優(yōu)化持久層開發(fā)過程

    Mybatis-Plus最優(yōu)化持久層開發(fā)過程

    Mybatis-plus(簡稱MP)是一個Mybatis的增強(qiáng)工具,在mybatis的基礎(chǔ)上只做增強(qiáng)不做改變,提高效率,自動生成單表的CRUD功能,這篇文章主要介紹了Mybatis-Plus最優(yōu)化持久層開發(fā),需要的朋友可以參考下
    2024-07-07
  • IDEA將Java.class文件反編譯為Java文件原理、實(shí)踐與深度解析

    IDEA將Java.class文件反編譯為Java文件原理、實(shí)踐與深度解析

    本文詳細(xì)介紹了如何使用IntelliJ IDEA進(jìn)行.class到.java的反編譯,包括基礎(chǔ)概念、實(shí)用技巧、引擎配置、疑難問題解決以及生產(chǎn)環(huán)境實(shí)戰(zhàn)案例,通過這些步驟,開發(fā)者可以有效地理解和學(xué)習(xí)Java代碼,提升開發(fā)效率,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • SpringBoot使用Jackson詳解

    SpringBoot使用Jackson詳解

    Spring?Boot中使用Jackson處理JavaBean序列化為JSON格式,常用框架包括Jackson、Fastjson和Gson,Jackson是Spring?Boot默認(rèn)的JSON處理庫,常用注解如@JsonProperty、@JsonIgnore、@JsonFormat等,用于自定義序列化和反序列化行為
    2025-02-02
  • Mybatis plus的自動填充與樂觀鎖的實(shí)例詳解(springboot)

    Mybatis plus的自動填充與樂觀鎖的實(shí)例詳解(springboot)

    這篇文章主要介紹了Mybatis plus的自動填充與樂觀鎖的實(shí)例詳解(springboot),本文給大家介紹的非常詳細(xì)對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 深入淺析ZooKeeper的工作原理

    深入淺析ZooKeeper的工作原理

    ZooKeeper 是一個開源的分布式協(xié)調(diào)服務(wù),由雅虎創(chuàng)建,是 Google Chubby 的開源實(shí)現(xiàn)。接下來通過本文跟大家介紹ZooKeeper的原理,小編覺得挺不錯的,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Java對字符串進(jìn)行加密解密

    Java對字符串進(jìn)行加密解密

    這篇文章主要為大家詳細(xì)介紹了Java字符串加密解密,對用戶輸入的每個字符的值進(jìn)行加密解密,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java實(shí)現(xiàn)簡單計算器小程序

    Java實(shí)現(xiàn)簡單計算器小程序

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡單計算器小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • java實(shí)現(xiàn)點(diǎn)擊按鈕事件彈出子窗口

    java實(shí)現(xiàn)點(diǎn)擊按鈕事件彈出子窗口

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)點(diǎn)擊按鈕事件彈出子窗口,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Java線程池實(shí)現(xiàn)帶返回值的方式方法

    Java線程池實(shí)現(xiàn)帶返回值的方式方法

    在Java中,線程池是一種重要的多線程處理方式,可以有效管理和重用線程,提高程序的性能和效率,有時候我們需要在多線程處理中獲取線程的返回值,本文將介紹如何使用線程池實(shí)現(xiàn)帶返回值的方式方法,需要的朋友可以參考下
    2024-09-09
  • Java使用MessageFormat應(yīng)注意的問題

    Java使用MessageFormat應(yīng)注意的問題

    這篇文章主要介紹了Java使用MessageFormat應(yīng)注意的問題,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-06-06

最新評論

曲周县| 乃东县| 舒兰市| 澎湖县| 中卫市| 博兴县| 彩票| 衡阳市| 镶黄旗| 南昌县| 临清市| 亚东县| 小金县| 那坡县| 威宁| 黔东| 伽师县| 扎囊县| 荔浦县| 西贡区| 得荣县| 永顺县| 启东市| 肥乡县| 眉山市| 蒙城县| 棋牌| 海南省| 遂昌县| 达日县| 九寨沟县| 延津县| 淮安市| 双流县| 隆化县| 成武县| 大理市| 准格尔旗| 渑池县| 德格县| 民丰县|