Collection集合
List
- ArrayList:object數組
- LinkedList:雙向鏈表
- 線程安全? 否
- 異同? ArrayList適合隨機存取
- LinkedList適合插入刪除操作,不適合搜索
Map
- HashMap:數組加鏈表,拉鍊法解決衝突 1.8之後超過閾值轉爲紅黑樹以減少搜索時間 非線程安全 初始大小爲16,每次擴容爲原來的二倍
- HashTable:數組+鏈表組成; 安全; 全表鎖,效率低,避免使用
- ConcurrentHashMap:1.7採用分段數組(Segment)+鏈表進行實現 1.8採用與hashmap1.8中相同的數據結構:數組+鏈表/紅黑樹
- TreeMap:紅黑樹 (自平衡的排序二叉樹)
- LinkedHashMap: LinkedHashMap繼承自HashMap,所以它的底層仍然是基於拉鍊式散列結構即由數組和鏈表或紅黑樹組成。另外,LinkedHashMap 在上面結構的基礎上,增加了一條雙向鏈表,使得上面的結構可以保持鍵值對的插入順序。同時通過對鏈表進行相應的操作,實現了訪問順序相關邏輯。
Set
- HashSet: 無序 唯一
- LinkedHashSet: LinkedHashSet 繼承於HashSet,並且其內部是通過 LinkedHashMap 來實現的。
- TreeSet:有序 唯一