在日常開發(fā)中,集合與排序是每一個(gè)程序員經(jīng)常用到的技能,但是在用集合的時(shí)候我們還應(yīng)該知道他的底層結(jié)構(gòu)是什么樣的.
首先來說一下list集合,list集合底層代碼是通過延長數(shù)組來實(shí)現(xiàn)的,所有我們在list集合中經(jīng)??梢愿杏X其用法與數(shù)組非常類似.list集合會(huì)有一個(gè)初始的長度,在每一次進(jìn)行存值的時(shí)候,list集合都會(huì)判斷該集合的長度是否達(dá)到臨界值(一般為75%),然后對其進(jìn)行擴(kuò)容,一般是對當(dāng)前的長度進(jìn)行翻倍.這樣就可以使list集合擁有無限長的空間存儲(chǔ)數(shù)據(jù).
set集合是一種單列的,不重復(fù)的集合.一般用于存取一些主要的數(shù)據(jù),比如用戶的一些核心信息,這些東西不允許重復(fù)的.而且set集合因?yàn)閷?shí)現(xiàn)了hashCode的算法來進(jìn)行存取,所有有比較強(qiáng)的查找與讀取能力.
Map集合也是我們平常廣泛用到的一種集合,map集合的長度與list大致相同,但是map集合是一種list集合與set集合的組合起來的集合,因?yàn)樗窃谝粭llist上給每個(gè)元素對應(yīng)一個(gè)set集合,還會(huì)對該set集合進(jìn)行鏈表式排序,當(dāng)集合中的數(shù)據(jù)大于指定數(shù)量時(shí),map集合對將數(shù)據(jù)再次進(jìn)行紅黑樹的排序,以保證查詢的效率.
咨詢熱線
010-85377344
135-21581588
微信客服
QQ客服
3026106565 點(diǎn)擊咨詢