java中 List,Set,Map有什麼具體區別?

時間 2021-06-07 03:04:09

1樓:君慕賢

List,Set,Map都是介面

List、Set是繼承與Collection介面,Map是鍵值對組成的集合

ArraryList是List的其中乙個實現類,我們常用的集合,底層是動態陣列,它可以儲存null值和任何型別的資料;他的初始化大小在原始碼中是private static final int DEFAULT_CAPACITY = 10;該集合是自動擴容;它是執行緒不安全的,支援隨機訪問

LinkList是List的其中乙個實現類,底層是雙向的鍊表,他不僅有ArraryList的基本操作還有get,remove,insert方法;但是他不能隨機訪問,所以查詢的速度比ArraryList慢,因為他的底層是鍊表,所以在增刪方面的速度遠遠大於ArraryList

Vector是List的其中乙個實現類,跟ArraryList差不多,ArraryList有的操作他都有,底層是動態陣列,但是他是同步的,意思就是他是執行緒安全的

HashSet可以說是在查詢方面速度是最快的集合,他的內部原理是HashCode,允許儲存有且只有乙個null值,元素的順序是由雜湊碼來決定,不保證迭代順序

TreeSet的內部原理是採用二叉樹,不允許儲存null值,元素的自然順序排序

HashMap內部是以雜湊表的資料結構實現,該集合是為了快速查詢設計的,內部有乙個hash陣列,允許儲存null值;該集合是執行緒不安全的

HashTable的實現原理和HashMap一樣,不允許儲存null值,是執行緒安全的集合

TreeMap的內部是乙個有序的雜湊表,底層是我們比較恐怖的紅黑樹

個人理解,有錯誤請指出,一起改正

2樓:拾荒者的筆記

List 有序可重複集合

Set 無序不可重複集合

Map 以鍵值對儲存的集合,key不能重複,key底層也是以set儲存的

Java中this的問題

閣剛廣志 乙個解釋,細節不一定完全正確,但是可以解釋題主的問題 主要是看到眾多答主要麼過於簡略 要麼答非所問 要麼不能自圓其說 所以這裡我盡量說得形象清楚一些 首先main函式中的這句 Father obj new Son 先new了乙個Son物件。初始化過程是這樣的 因為Son的基類是Father...

Java中關於String的問題?

超級大地 Q1jvm執行記憶體分為五個部分,那字串常量池屬於哪個部分的?是屬於堆的一部分還是單獨的一部分記憶體區域?字串常量池屬於方法區,準確的來說是方法區中的執行時常量池。方法區邏輯上是堆記憶體的一部分,例如我們常用的HotSpot虛擬機器就是將方法區劃為堆記憶體中的永久代,但是為了區分,主流還是...

Java 中 newInstance 方法和 new 的區別是什麼?

李偉 用new這個關鍵字的話,是呼叫new指令建立乙個物件,然後呼叫構造方法來初始化這個物件,如果你反編譯class的話,你會看到乙個Object obj new Object 這種語句,會先呼叫new指令生成乙個物件,然後呼叫dup來複製物件的引用,最後呼叫Object的構造方法。而newInst...