List 與 Set 的區別?


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM