Java集合中List、Set、Map理解

2020-10-18 12:01:00

List Set繼承Collection介面 Map不是
List可以存放重複元素 Set不可以 實現List介面的集合有:ArrayList、LinkedList、vector、Stack
ArrayList(執行緒不安全)和vector(執行緒安全)底層由陣列組成(都是有序非同步的集合)
LInkedList(執行緒不安全)底層由雙向連結串列組成

Set不可以存放重複元素 實現Set介面的集合由:TreeSet、HashSet、LinkedHashSet、EnumSet
TreeSet(非執行緒安全)由二元樹實現
HashSet(非執行緒安全)是查詢速度最快的集合,內部由HashCode實現
LinkedHashSet(非執行緒安全)效能比HashSet好,但是插入時效能稍微遜色於HashSet。

Map介面不繼承Collection 是由鍵值對組成(key-value) 實現map的集合有:HashMap、TreeMap、WeakHashMap、HashTable。
HaspMap (非執行緒安全)是非同步的 底層由陣列+連結串列+紅黑樹實現
TreeMap (非執行緒安全)底層由紅黑樹實現
WeakHashMap (非執行緒安全)使用的是弱參照,適用於快取
HashTable 是同步的 (執行緒安全)(因為通過synchronized鎖) 繼承自Dictionary類