List Set Map之間的不同
它們都繼承自Collection類。
10點不同:
序號 | 屬性 | java.util.List | java.util.Set | java.util.Map |
---|---|---|---|---|
1 | 重複元素 | List允許儲存重複元素。 | Set不允許儲存重複元素。 | Map以鍵值對形式儲存資料,key不允許重複,value可以重複。 |
2 | 插入順序 | List以插入順序儲存元素。 |
大部分Set實現類不維護插入順序。 HashSet不維護插入順序。 LinkedHashSet維護插入順序。 TreeSet以自然順序排序。 |
大部分Map實現類不維護插入順序。 HashMap不維護插入順序。 LinkedHashMap維護key的插入順序。 TreeMap以key的自然順序排序。 |
3 | null keys | List允許儲存多個null值。 |
大部分Set實現類允許儲存一個null值。 TreeSet和ConcurrentSkipListSet 不允許儲存null值。 |
Map實現類: HashMap允許一個null鍵和多個null值。 LinkedHashMap允許一個null鍵和多個null值。 TreeMap不允許null鍵,允許多個null值。 Hashtable不允許null鍵和null值。 ConcurrentHashMap不允許null鍵和null值。 ConcurrentSkipListMap不允許null鍵和null值。 |
4 | 獲取指定索引的元素 | List實現類提供了get方法獲取指定索引的元素。get方法直接通過指定索引獲取元素,因此時間複雜度為O(1)。 | Set實現類不提供此類方法。 | Map實現類不提供此類方法。 |
5 | 子類 | ArrayList LinkedList Vector CopyOnWriteArrayList |
HashSet CopyOnWriteArraySet LinkedHashSet TreeSet ConcurrentSkipListSet EnumSet |
HashMap Hashtable ConcurrentHashMap LinkedHashMap TreeMap ConcurrentSkipListMap IdentityHashMap WeakHashMap EnumMap |
6 | listIterator | listIterator方法遍歷元素並返回ListIterator物件。 listIterator相對iterator方法提供了額外的方法:hasPrevious(), previous(), nextIndex(), previousIndex(), add(E element), set(E element)。 |
Set沒有提供類似listIterator的方法,只是簡單返回Iterator。 | Map提供了三種iterator: map.keySet().iterator() 遍歷key並返回Iterator物件。 map.values().iterator() 遍歷value並返回Iterator物件。 map.entrySet().iterator() 遍歷key和value並返回Map.Entry物件。 |
7 | 結構和調整大小 | List是可調整大小的陣列。 | Set使用Map實現。因此Set的結構和調整大小與Map相同。 | Map使用雜湊技術儲存鍵值對。 |
8 | 基於結構/隨機訪問的索引 | ArrayList使用基於索引的陣列實現,因此提供了隨機訪問。LinkedList不是基於索引的結構。 | Set不是基於索引的結構。 | Map不是基於索引的結構。 |
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
相關文章
- List、Set、Queue、Map
- List,Set,Queue,Map介面
- Scala——三個容器:List Set Map
- set\list\map部分原始碼解析原始碼
- Java 中的泛型 集合(List,Set) MapJava泛型
- 你對Collection中Set、List、Map理解?
- Java執行緒安全的集合類:Map、List、SetJava執行緒
- Java集合體系總結 Set、List、Map、QueueJava
- list與Set、Map區別及適用場景
- Kotlin——高階篇(四):集合(Array、List、Set、Map)基礎Kotlin
- Java容器(List、Set、Map)知識點快速複習手冊Java
- es6 的學習之 set 和 map
- map、unordered_map、set 和 unordered_set的小介紹
- Set 和Map
- 【JavaSE】集合類Collection集合Map集合的簡單介紹,List介面,中三個常用子類ArrayList、Vector、LinkedList之間的比較。Set介面。Java
- java的各種集合為什麼不安全(List、Set、Map)以及代替方案Java
- Java集合中List,Set以及Map等集合體系詳解(史上最全)Java
- MyBatis中foreach傳入引數為list、陣列、map的不同寫法MyBatis陣列
- Json,String,Map之間的轉換JSON
- Python 的List 和tuple,Dict,SetPython
- JavaScript中的new map()和new set()使用詳細(new map()和new set()的區別)JavaScript
- ES6之Set和Map資料結構資料結構
- ES6學習筆記之Set和Map筆記
- Java筆記——【List、Set】Java筆記
- Map集合&&Map集合的不同遍歷【keySet()&&entrySet()】
- map和set對vector排序排序
- es6-Set與Map
- 1、List 和 Set 、Map的區別-金三銀四跳槽季Java面試大綱(答案篇)Java面試
- Map和String型別之間的轉換型別
- ES6中的Map與Set集合
- 實現不同程式之間的通訊
- Hash Map集合和Hash Set集合
- ES6【Set 、 WeakSet 、Map、WeakMap 】
- Set和Map資料結構。資料結構
- ES6 Set,WeakSet,Map,WeakMap
- list中add、set方法詳解
- 實戰小技巧19:List轉Map List的幾種姿勢
- Java Map和List常見操作Java