List 是可重復集合,Set 是不可重復集合,這兩個接口都實現了 Collection 父接口。
Map 未繼承 Collection,而是獨立的接口,Map 是一種把鍵對象和值對象進行映射的集合,它的每一個元素都包含了一對鍵對象和值對象,Map 中存儲的數據是沒有順序的, 其 key 是不能重復的,它的值是可以有重復的。
List 的實現類有 ArrayList,Vector 和 LinkedList:
ArrayList 和 Vector 內部是線性動態數組結構,在查詢效率上會高很多,Vector 是線程安全的,相比 ArrayList 線程不安全的,性能會稍慢一些。
LinkedList:是雙向鏈表的數據結構存儲數據,在做查詢時會按照序號索引數據進行前向或后向遍歷,查詢效率偏低,但插入數據時只需要記錄本項的前后項即可,所以插入速度較快。
Set 的實現類有 HashSet 和 TreeSet;
HashSet:內部是由哈希表(實際上是一個 HashMap 實例)支持的。它不保證 set 元素的迭代順序。
TreeSet:TreeSet 使用元素的自然順序對元素進行排序,或者根據創建 set 時提供的 Comparator 進行排序。
Map 接口有三個實現類:Hashtable,HashMap,TreeMap,LinkedHashMap;
Hashtable:內部存儲的鍵值對是無序的是按照哈希算法進行排序,與 HashMap 最大的區別就是線程安全。鍵或者值不能為 null,為 null 就會拋出空指針異常。
TreeMap:基於紅黑樹 (red-black tree) 數據結構實現,按 key 排序,默認的排序方式是升序。
LinkedHashMap:有序的 Map 集合實現類,相當於一個棧,先 put 進去的最后出來,先進后出。
List 和 Map 區別?
一個是存儲單列數據的集合,另一個是存儲鍵和值這樣的雙列數據的集合,List 中存儲的數據是有順序,並且允許重復;Map 中存儲的數據是沒有順序的,其 key 是不能重復的,它的值是可以有重復的
————————————————
版權聲明:本文為CSDN博主「Pandaminn」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Pandaminn/article/details/92682607