Java裏的集合:List/Set/Map
首先對List/Set/Map進行說明:
1. 三者都是接口, List和Set繼承至Collection接口,Map為獨立的接口
2. List是無序的、Set是有序的。Map中既有有序的實現類也有無序的實現類。
一、List
1. 無序
2. List包含:ArrayList、LinkedList、Vector。
* ArrayList: 底層結構為數組、線程不安全
* LinkedList: 底層結構為鏈表、線程不安全
* Vector: 底層結構為數組、線程安全
3. 補充說明:
*數組實現:查詢快,增加刪除操作慢
* 鏈表實現:查詢慢,增加刪除操作快
二、Set
1. 有序
2. Set包含:HashSet、LinkedHashSet、TreeSet
* HashSet: 底層結構為哈希表
* LinkedHashSet: 底層結構為鏈表+哈希表 (FIFO)
* TreeSet: 底層結構為紅黑樹
3. 補充說明:
* 哈希表可以保證唯一性 (hashCode()和equals())
* 鏈表可以保證有序性
* 紅黑樹可以保證有序性和唯一性 (有序性:平衡二叉樹;唯一性:compare(Object o)的返回值是否為0來判斷) 參考來源
三、Map
1. TreeMap 有序、HashMap和HashTable無序
2. HashMap與HashTable的區別
* HashTable是同步的、線程安全,但是效率會慢
* HashMap是非同步的。線程不安全,效率較快
* HashTable不允許空值、HashMap允許空值
* HashTable的父類為Dictionary,HashMap的父類為AbstractMap
參考來源:
1. https://blog.csdn.net/zhangqunshuai/article/details/80660974
2. https://blog.csdn.net/dch9210/article/details/50951690
Java裏的集合:List/Set/Map