Collection體系的常用類(lèi)及其背后的數(shù)據(jù)結(jié)構(gòu)

  • List

  1. ArrayList:
    背后是一個(gè)動(dòng)態(tài)數(shù)組,有序插入元素,可以根據(jù)下標(biāo)取得對(duì)應(yīng)元素,檢索元素為線(xiàn)性查找,效率較低。當(dāng)容量不足時(shí)會(huì)自動(dòng)擴(kuò)容,每次新建一個(gè)新的List,大小為原來(lái)的1.5倍,再將所有元素拷貝到新的List中去。
  2. LinkedList:
    背后是一個(gè)鏈表結(jié)構(gòu),有序插入元素,可以根據(jù)下標(biāo)取得對(duì)應(yīng)元素, 檢索時(shí)從頭部或者尾部不斷向下標(biāo)靠攏,所以頭部和尾部的查找效率高,中間低。
  • Set

  1. HashSet:
    計(jì)算出元素的哈希值,哈希值相同的元素放在同一個(gè)哈希桶里,每個(gè)哈希桶里維護(hù)一個(gè)鏈表。插入的元素是無(wú)序的且不允許出現(xiàn)重復(fù)元素,查找效率高。但當(dāng)發(fā)生哈希碰撞時(shí),整個(gè)結(jié)構(gòu)退化為鏈表會(huì)導(dǎo)致性能急劇下降。
  2. LinkedHashSet:
    不同于HashSet,前面的數(shù)據(jù)結(jié)構(gòu)為鏈表,所以是有序的,其他幾乎一樣。
  3. TreeSet:
    前面的數(shù)據(jù)結(jié)構(gòu)為二叉樹(shù),可以對(duì)插入的元素進(jìn)行排序。檢索快,時(shí)間復(fù)雜度降為對(duì)數(shù)級(jí)。
  • Map

  1. HashMap:
    實(shí)質(zhì)上和HashSet一樣,不過(guò)可以存儲(chǔ)鍵(Key)到值(Value)的映射。JDK1.8之后當(dāng)鏈表節(jié)點(diǎn)大于7時(shí)會(huì)裂變?yōu)榧t黑樹(shù)。
  2. TreeMap:
    可以排序的HashMap。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容