java集合類主要由兩個接口派生而出,Collection和Map

collection.png

Map.png
| interface | 簡介 |
|---|---|
| Collection | Collection 層次結(jié)構(gòu) 中的根接口。Collection 接口存儲一組不唯一,無序的對象。 |
| List | List接口是一個有序的 Collection,使用此接口能夠精確的控制每個元素插入的位置,能夠通過索引(元素在List中位置,類似于數(shù)組的下標(biāo))來訪問List中的元素,第一個元素的索引為 0,允許有相同元素。 |
| Set | Set 具有與 Collection 完全一樣的接口,只是行為上不同,Set 不保存重復(fù)的元素。 |
| SortedSet | 繼承于Set保存有序的集合。 |
| Map | Map 接口存儲一組鍵值對象,提供key(鍵)到value(值)的映射。 |
| SortedMap | 繼承于 Map,使 Key 保持在升序排列。 |
| Class | 簡介 |
|---|---|
| LinkedList | 該類實(shí)現(xiàn)了List接口,允許有null(空)元素。主要用于創(chuàng)建鏈表數(shù)據(jù)結(jié)構(gòu),該類沒有同步方法,如果多個線程同時訪問一個List,則必須自己實(shí)現(xiàn)訪問同步,解決方法就是在創(chuàng)建List時候構(gòu)造一個同步的List。 例如Listlist=Collections.synchronizedList(newLinkedList(...));LinkedList 查找效率低,插入和刪除效率高。 |
| ArrayList | 該類也是實(shí)現(xiàn)了List的接口,實(shí)現(xiàn)了可變大小的數(shù)組,隨機(jī)訪問和遍歷元素時,提供更好的性能。該類也是非同步的,在多線程的情況下不要使用。ArrayList 增長當(dāng)前長度的50%,插入刪除效率低。 |
| HashSet | 該類實(shí)現(xiàn)了Set接口,不允許出現(xiàn)重復(fù)元素,不保證集合中元素的順序,允許包含值為null的元素,但最多只能一個。 |
| LinkedHashSet | 具有可預(yù)知迭代順序的 Set 接口的哈希表和鏈接列表實(shí)現(xiàn)。 |
| TreeSet | 該類實(shí)現(xiàn)了Set接口,可以實(shí)現(xiàn)排序等功能。 |
| HashMap | HashMap 是一個散列表,它存儲的內(nèi)容是鍵值對(key-value)映射。該類實(shí)現(xiàn)了Map接口,根據(jù)鍵的HashCode值存儲數(shù)據(jù),具有很快的訪問速度,最多允許一條記錄的鍵為null,不支持線程同步。 |
| TreeMap | 繼承了AbstractMap,并且使用一顆樹。 |
| WeakHashMap | 繼承AbstractMap類,使用弱密鑰的哈希表。 |
| LinkedHashMap | 繼承于HashMap,使用元素的自然順序?qū)υ剡M(jìn)行排序. |
| IdentityHashMap | 繼承AbstractMap類,比較文檔時使用引用相等。 |
要點(diǎn):
Set存儲一組唯一,無序的對象。
List存儲一組不唯一,有序(插入順序)的對象。
Map保存的是鍵值對,只能通過key訪問value。