2023-02-28 關(guān)于集合中的有序性(sort)和穩(wěn)定性(order)以及其他內(nèi)容

首先

1拦焚、有序性是和SortedSet有關(guān)的,實(shí)現(xiàn)這個SortedSet接口即可(常見NavigableSet杠输,是SortedSet的子類)

? ? ?有序性是指遍歷的結(jié)果是按某種比較規(guī)則依次排列的。說白了就是元素之間使用compare比較

2、穩(wěn)定性主要是和AbstractCollection有關(guān)的爬坑,間接或者直接實(shí)現(xiàn)這個抽象類即可(為什么說主要滥崩?因?yàn)楦鷋ashcode的實(shí)現(xiàn)也有關(guān))

? ??穩(wěn)定性是指集合每次遍歷的元素次序是一定的。寫入的時候是什么順序?qū)懭腽信#瑃oString的時候就是什么順序讀出(其實(shí)就是關(guān)鍵在toString這里搞糕,toString使用的就是AbstractCollection的toString)

Map<K,V> 典型的實(shí)現(xiàn)就是HashMap,它并沒有實(shí)現(xiàn)以上兩個接口或者抽象類曼追,所以是無序且不穩(wěn)定的窍仰,但是TreeMap是有序的,因?yàn)樗鼘?shí)現(xiàn)了NavigableSet

Set<T>的去重原理其實(shí)就是使用的HashMap礼殊,put的時候是K驹吮,V(V這個是固定的object),所以Set集合維護(hù)起來就是一個去重了的集合晶伦。大部分的Set子類都實(shí)現(xiàn)了AbstractSet(AbstractCollection的子類之一)碟狞,所以是具有穩(wěn)定性的。

上面提到穩(wěn)定性跟hashCode有關(guān)

舉個例子

HashSet和HashMap都是無序的婚陪,HashSet的底層實(shí)現(xiàn)其實(shí)也是HashMap(點(diǎn)擊HashSet構(gòu)造方法即可得知)族沃。即便HashSet也是繼承了AbstractCollection,因?yàn)镠ashSet和HashMap插入后都會自動排序近忙,意思是因?yàn)閷懭氲臅r候它自動排序了導(dǎo)致取值的時候跟寫入的時候順序不一樣了(具體算法就沒研究了)

而LinkedHashSet是有序的竭业,LinkedHashSet的底層實(shí)現(xiàn)是LinkedHashMap!(點(diǎn)擊LinkedHashSet構(gòu)造方法即可得知)及舍。而LinkedHashMap重寫了相關(guān)的方法如Entry的靜態(tài)內(nèi)部類等所以實(shí)現(xiàn)了有序未辆。

圖為LinkedHashMap對一些關(guān)鍵方法的重載

來實(shí)現(xiàn)底層的寫入保持了有序性

a.jpg


加一個執(zhí)行結(jié)果的圖


b.jpg

所有的寫入順序都是1,2锯玛,4咐柜,3∪敛校可以發(fā)現(xiàn)LinkedHashSet和linkedHashMap保持了有序性拙友,HashMap和HashSet都自動排序了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末歼郭,一起剝皮案震驚了整個濱河市遗契,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌病曾,老刑警劉巖牍蜂,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漾根,死亡現(xiàn)場離奇詭異,居然都是意外死亡鲫竞,警方通過查閱死者的電腦和手機(jī)辐怕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門从绘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寄疏,“玉大人,你說我怎么就攤上這事僵井∩陆兀” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵驹沿,是天一觀的道長艘策。 經(jīng)常有香客問我,道長渊季,這世上最難降的妖魔是什么朋蔫? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮却汉,結(jié)果婚禮上驯妄,老公的妹妹穿的比我還像新娘。我一直安慰自己合砂,他們只是感情好青扔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著翩伪,像睡著了一般微猖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缘屹,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天凛剥,我揣著相機(jī)與錄音,去河邊找鬼轻姿。 笑死犁珠,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的互亮。 我是一名探鬼主播犁享,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼豹休!你這毒婦竟也來了炊昆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窑眯,沒想到半個月后屏积,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡磅甩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了姥卢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卷要。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖独榴,靈堂內(nèi)的尸體忽然破棺而出僧叉,到底是詐尸還是另有隱情,我是刑警寧澤棺榔,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布瓶堕,位于F島的核電站,受9級特大地震影響症歇,放射性物質(zhì)發(fā)生泄漏郎笆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一忘晤、第九天 我趴在偏房一處隱蔽的房頂上張望宛蚓。 院中可真熱鬧,春花似錦设塔、人聲如沸凄吏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痕钢。三九已至,卻和暖如春序六,著一層夾襖步出監(jiān)牢的瞬間任连,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工难咕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留课梳,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓余佃,卻偏偏與公主長得像暮刃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子爆土,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Collection接口 Collection接口是所有集合的祖先類椭懊。他有兩個構(gòu)造方法,一個無參構(gòu)造,一個是帶Co...
    夜幕繁華閱讀 593評論 0 0
  • 集合系列(一):集合框架概述 Java 集合是 Java API 用得最頻繁的一類氧猬,掌握 Java 集合的原理以及...
    陳樹義閱讀 324評論 0 0
  • 01. 摘要 Set集合的特點(diǎn)主要有:元素不重復(fù)背犯、存儲無序的特點(diǎn)。 打開 Set 集合盅抚,主要實(shí)現(xiàn)類有 HashSe...
    chen_chen_chen_閱讀 234評論 0 0
  • Java集合框架 Java中封裝了許多常用的數(shù)據(jù)結(jié)構(gòu)漠魏,稱為集合框架,可以有效組織數(shù)據(jù)妄均,提高程序性能柱锹。最初Java只...
    Steven1997閱讀 933評論 0 2
  • 一. 集合類帶來的好處 降低編程難度:在編程中會經(jīng)常需要鏈表、向量等集合類丰包,如果自己動手寫代碼實(shí)現(xiàn)這些類禁熏,需要花費(fèi)...
    cyw1227閱讀 287評論 0 0