ArrayList、Vector、HashMap、HashSet的默認(rèn)初始容量

List 元素是有序的、可重復(fù)
ArrayList、Vector默認(rèn)初始容量為10
Vector:線程安全,但速度慢
    底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組結(jié)構(gòu)
    加載因子為1:即當(dāng) 元素個(gè)數(shù) 超過 容量長度 時(shí),進(jìn)行擴(kuò)容
    擴(kuò)容增量:原容量的 1倍
      如 Vector的容量為10,一次擴(kuò)容后是容量為20
ArrayList:線程不安全,查詢速度快
    底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組結(jié)構(gòu)
    擴(kuò)容增量:原容量的 0.5倍+1
      如 ArrayList的容量為10,一次擴(kuò)容后是容量為16
Set(集) 元素?zé)o序的、不可重復(fù)。
HashSet:線程不安全,存取速度快
     底層實(shí)現(xiàn)是一個(gè)HashMap(保存數(shù)據(jù)),實(shí)現(xiàn)Set接口
     默認(rèn)初始容量為16(為何是16,見下方對(duì)HashMap的描述)
     加載因子為0.75:即當(dāng) 元素個(gè)數(shù) 超過 容量長度的0.75倍 時(shí),進(jìn)行擴(kuò)容
     擴(kuò)容增量:原容量的 1 倍
      如 HashSet的容量為16,一次擴(kuò)容后是容量為32
Map是一個(gè)雙列集合
HashMap:默認(rèn)初始容量為16
    ?。楹问?6:16是2^4,可以提高查詢效率,另外,32=16<<1?????? -->至于詳細(xì)的原因可另行分析,或分析源代碼)

     加載因子為0.75:即當(dāng) 元素個(gè)數(shù) 超過 容量長度的0.75倍 時(shí),進(jìn)行擴(kuò)容
     擴(kuò)容增量:原容量的 1 倍
      如 HashSet的容量為16,一次擴(kuò)容后是容量為32

TreeMap和TreeSet原理

TreeMap底層是用紅黑樹來存儲(chǔ),每個(gè)Entry對(duì)應(yīng)樹的一個(gè)節(jié)點(diǎn),TreeMap元素默認(rèn)從小到大排序。V put(Key k, Value v)實(shí)質(zhì)是二叉排序樹的插入算法

Set和Map的關(guān)系

Set代表無序,不能重復(fù)的集合;Map代表Key-Value組成的集合,是一種關(guān)聯(lián)數(shù)組。Map的Key要求是不能重復(fù),沒有順序。把Map的所有Key組合起來就是Set。Set keySet();

Vector和ArrayList區(qū)別

Vector提供synchronized修飾方法,是線程安全版本的ArrayList

最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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