一误褪、集合的定義
集合類是Java數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)春叫。Java的集合類是java.util包中的重要內(nèi)容肩钠,它允許以各種方式將元素分組,并定義了各種使這些元素更容易操作的方法暂殖。
Java集合類是Java將一些基本的和使用頻率極高的基礎(chǔ)類進(jìn)行封裝和增強(qiáng)后再以一個(gè)類的形式提供价匠。集合類是可以往里面保存多個(gè)對象的類,存放的是對象呛每,不同的集合類有不同的功能和特點(diǎn)踩窖,適合不同的場合,用以解決一些實(shí)際問題晨横。
二洋腮、集合的分類
Collection
是一個(gè)基本的集合接口,Collection中可以容納一組集合元素(Element)手形。
1啥供、List
Arraylist: Object數(shù)組
Vector: Object數(shù)組
LinkedList: 雙向循環(huán)鏈表
2、Set
HashSet(無序库糠,唯一):基于 HashMap 實(shí)現(xiàn)的伙狐,底層采用 HashMap 來保存元素
LinkedHashSet: LinkedHashSet 繼承與 HashSet,并且其內(nèi)部是通過 LinkedHashMap 來實(shí)現(xiàn)的曼玩。有點(diǎn)類似于我們之前說的LinkedHashMap 其內(nèi)部是基于 Hashmap 實(shí)現(xiàn)一樣鳞骤,不過還是有一點(diǎn)點(diǎn)區(qū)別的。
TreeSet(有序黍判,唯一): 紅黑樹(自平衡的排序二叉樹豫尽。)
Map
Map提供鍵(key)到值(value)的映射。一個(gè)Map中不能包含相同的鍵顷帖,每個(gè)鍵只能映射一個(gè)值美旧。
HashMap: JDK1.8之前HashMap由數(shù)組+鏈表組成的渤滞,數(shù)組是HashMap的主體,鏈表則是主要為了解決哈希沖突而存在的(“拉鏈法”解決沖突).JDK1.8以后在解決哈希沖突時(shí)有了較大的變化榴嗅,當(dāng)鏈表長度大于閾值(默認(rèn)為8)時(shí)妄呕,將鏈表轉(zhuǎn)化為紅黑樹,以減少搜索時(shí)間
LinkedHashMap:LinkedHashMap 繼承自 HashMap嗽测,所以它的底層仍然是基于拉鏈?zhǔn)缴⒘薪Y(jié)構(gòu)即由數(shù)組和鏈表或紅黑樹組成绪励。另外,LinkedHashMap 在上面結(jié)構(gòu)的基礎(chǔ)上唠粥,增加了一條雙向鏈表疏魏,使得上面的結(jié)構(gòu)可以保持鍵值對的插入順序。同時(shí)通過對鏈表進(jìn)行相應(yīng)的操作晤愧,實(shí)現(xiàn)了訪問順序相關(guān)邏輯大莫。
HashTable: 數(shù)組+鏈表組成的,數(shù)組是 HashMap 的主體官份,鏈表則是主要為了解決哈希沖突而存在的
TreeMap: 紅黑樹(自平衡的排序二叉樹)