List Set Map之間的不同

它們都繼承自Collection類。

10點(diǎn)不同:

序號(hào) 屬性 java.util.List java.util.Set java.util.Map
1 重復(fù)元素 List允許存儲(chǔ)重復(fù)元素。 Set不允許存儲(chǔ)重復(fù)元素。 Map以鍵值對(duì)形式存儲(chǔ)數(shù)據(jù),key不允許重復(fù),value可以重復(fù)。
2 插入順序 List以插入順序存儲(chǔ)元素。 大部分Set實(shí)現(xiàn)類不維護(hù)插入順序。
HashSet不維護(hù)插入順序。
LinkedHashSet維護(hù)插入順序。
TreeSet自然順序排序。
大部分Map實(shí)現(xiàn)類不維護(hù)插入順序。
HashMap不維護(hù)插入順序。
LinkedHashMap維護(hù)key的插入順序。
TreeMap以key的自然順序排序。
3 null keys List允許存儲(chǔ)多個(gè)null值。 大部分Set實(shí)現(xiàn)類允許存儲(chǔ)一個(gè)null值。
TreeSetConcurrentSkipListSet 不允許存儲(chǔ)null值。
Map實(shí)現(xiàn)類:
HashMap允許一個(gè)null鍵多個(gè)null值。
LinkedHashMap允許一個(gè)null鍵多個(gè)null值。
TreeMap不允許null鍵允許多個(gè)null值。
Hashtable不允許null鍵和null值。
ConcurrentHashMap不允許null鍵和null值
ConcurrentSkipListMap不允許null鍵和null值。
4 獲取指定索引的元素 List實(shí)現(xiàn)類提供了get方法獲取指定索引的元素。get方法直接通過指定索引獲取元素,因此時(shí)間復(fù)雜度為O(1)。 Set實(shí)現(xiàn)類不提供此類方法。 Map實(shí)現(xiàn)類不提供此類方法。
5 子類 ArrayList
LinkedList
Vector
CopyOnWriteArrayList
HashSet
CopyOnWriteArraySet
LinkedHashSet
TreeSet
ConcurrentSkipListSet
EnumSet
HashMap
Hashtable
ConcurrentHashMap
LinkedHashMap
TreeMap
ConcurrentSkipListMap
IdentityHashMap
WeakHashMap
EnumMap
6 listIterator listIterator方法遍歷元素并返回ListIterator對(duì)象。
listIterator相對(duì)iterator方法提供了額外的方法:hasPrevious(), previous(), nextIndex(), previousIndex(), add(E element), set(E element)。
Set沒有提供類似listIterator的方法,只是簡(jiǎn)單返回Iterator。 Map提供了三種iterator:
map.keySet().iterator()
遍歷key并返回Iterator對(duì)象。
map.values().iterator()
遍歷value并返回Iterator對(duì)象。
map.entrySet().iterator()
遍歷key和value并返回Map.Entry對(duì)象。
7 結(jié)構(gòu)和調(diào)整大小 List是可調(diào)整大小的數(shù)組。 Set使用Map實(shí)現(xiàn)。因此Set的結(jié)構(gòu)和調(diào)整大小與Map相同。 Map使用哈希技術(shù)存儲(chǔ)鍵值對(duì)。
8 基于結(jié)構(gòu)/隨機(jī)訪問的索引 ArrayList使用基于索引的數(shù)組實(shí)現(xiàn),因此提供了隨機(jī)訪問。LinkedList不是基于索引的結(jié)構(gòu)。 Set不是基于索引的結(jié)構(gòu)。 Map不是基于索引的結(jié)構(gòu)。
9 非同步的子類 ArrayList
LinkedList
HashSet
LinkedHashSet
TreeSet
EnumSet
HashMap
LinkedHashMap
TreeMap
IdentityHashMap
WeakHashMap
EnumMap
10 同步的子類 Vector
CopyOnWriteArrayList
CopyOnWriteArraySet
ConcurrentSkipListSet
Hashtable
ConcurrentHashMap
ConcurrentSkipListMap

http://www.javamadesoeasy.com/2016/02/difference-between-list-set-and-map-in.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容