List 元素是有序的只泼、可重復(fù)
ArrayList、Vector默認(rèn)初始容量為10
Vector:線程安全卵洗,但速度慢
底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組結(jié)構(gòu)
加載因子為1:即當(dāng) 元素個數(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:線程不安全孽惰,存取速度快
底層實現(xiàn)是一個HashMap(保存數(shù)據(jù)),實現(xiàn)Set接口
默認(rèn)初始容量為16(為何是16鸥印,見下方對HashMap的描述)
加載因子為0.75:即當(dāng) 元素個數(shù) 超過 容量長度的0.75倍 時勋功,進(jìn)行擴(kuò)容
擴(kuò)容增量:原容量的 1 倍
如 HashSet的容量為16,一次擴(kuò)容后是容量為32
Map是一個雙列集合
HashMap:默認(rèn)初始容量為16
】馑怠(為何是16:16是2^4狂鞋,可以提高查詢效率,另外潜的,32=16<<1?????? -->至于詳細(xì)的原因可另行分析骚揍,或分析源代碼)
加載因子為0.75:即當(dāng) 元素個數(shù) 超過 容量長度的0.75倍 時,進(jìn)行擴(kuò)容
擴(kuò)容增量:原容量的 1 倍
如 HashSet的容量為16,一次擴(kuò)容后是容量為32
TreeMap和TreeSet原理
TreeMap底層是用紅黑樹來存儲信不,每個Entry對應(yīng)樹的一個節(jié)點嘲叔,TreeMap元素默認(rèn)從小到大排序。V put(Key k, Value v)實質(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