集合框架? ??

一、collection


collection接口是所有單列集合的根,然后被List、Set、queue、Stack四大集合繼承(容量:jdk1.8版本之前,初識容量,10,超過提升為1.5倍;1.8版本以后,初識容量為0,通過add(),初識容量為10,超過提升1.5倍)
?1、List (有序,可重復(fù))
????????????1.1? Arraylist? 底層由數(shù)組實(shí)現(xiàn),有序可重復(fù),線程不安全,查找效率高
????????????1.2 LinkedList 底層由鏈表實(shí)現(xiàn),有序可重復(fù),線程不安全,增刪效率高
????????????1.3 Vector 線程安全的Arraylist (初始容量10,擴(kuò)充時(shí),2倍擴(kuò)充)
?2、set(元素是無序的,不可以重復(fù),沒有索引)
????????????2.1 HashSet:?底層數(shù)據(jù)結(jié)構(gòu)是哈希表(存入對象時(shí),先判斷hashCode()得到的值,如果一樣,再用equals方法比較,在相同就當(dāng)做同一個(gè)元素,不同就在同一個(gè)位置上串聯(lián)存儲兩個(gè)元素),線程不安全,存取速度快
? ? ? ? ? ? 2.2 TreeSet :底層數(shù)據(jù)結(jié)構(gòu)是二叉樹,線程不安全。可以對Set集合中的元素進(jìn)行排序
?3、queue:先進(jìn)先出可以考慮Queue隊(duì)列
?4、stack:先進(jìn)后出可以考慮Stack,遞歸!?。?!壓棧 ,彈棧
二、Map(雙列集合)

Map集合是一個(gè)接口,和Collection集合不同的是,它是雙列集合,也就是說他所存儲的是鍵值對。(其中鍵要求唯一,一個(gè)鍵不能對應(yīng)多個(gè)值,Map集合沒有Iterator迭代器,如果需要迭代需要轉(zhuǎn)化為單列集合間接迭代)(初始容量為16,0.75時(shí),擴(kuò)充為原來2倍)
? ???????????1、HashMap:底層由數(shù)組+鏈表+紅黑樹實(shí)現(xiàn),線程不安全,無序,鍵值可以為null,效率高。
?????????????2、ConcurrentHashMap:底層由數(shù)組+鏈表+紅黑樹實(shí)現(xiàn),線程安全,無序,鍵值不可以為null(同步代碼塊)。
? ???????????3、HashTable:底層由數(shù)組+鏈表+紅黑樹實(shí)現(xiàn),線程安全,已被取代(同步方法)
數(shù)據(jù)存儲時(shí),通過key值得hashcode,計(jì)算出hash值,如果引發(fā)hash沖突,就在該數(shù)組位置引出鏈表,當(dāng)鏈表數(shù)超過8,則變?yōu)榧t黑樹,鏈表數(shù)小于6,變?yōu)閿?shù)組+鏈表
三、迭代器
迭代器是針對單列集合使用的,底層主要有三個(gè)方法,hasnext()、tnext()、remove();