【Java集合】1 集合概述
Q:Java 中常用的集合有哪些?
Java 集合分為 Collection 和 Map
Collection
Colletion 包括 List、Set、Queue
List:有序集合,允許有重複元素,主要實現類有
- Vector:執行緒安全的動態陣列
- ArrayList:與 Vector 類似,基於動態陣列實現,支援隨機訪問,查詢快,增刪慢,因為要移動後續所有的元素,但它不是執行緒安全的,效能更好;底層都是使用物件陣列儲存資料,當陣列滿時,會自動擴容,建立新的陣列,並拷貝原有陣列資料,擴容後容量 ArrayList 增加 50%,Vector 增加一倍。
- LinkedList:基於雙向連結串列實現,只能順序訪問,查詢慢,增刪快。
Set:是 Map 的馬甲,和 List 最大的區別是,不允許有重複元素,主要實現類有
- HashSet:基於 HashMap 實現,底層建立了一個 Dummy 物件 “PRESENT” 作為 value,所有元素以鍵的形式放入 HashMap 中,即 HashSet 是以雜湊演算法來儲存元素,所以雜湊正常時,能提供常數時間的 add、contain 操作,但不保證有序。
- LinkedHashSet:HashSet 的子類,基於 LinkedHashMap 實現,底層使用雙向連結串列維護元素插入的順序,同時能提供常數時間的 add、contain 操作,但效能略低於 HashSet,因為有需要維護連結串列的開銷。
- TreeSet:基於 TreeMap 實現,支援順序訪問,預設按值升序,也可以由指定的 Comparator 來決定,但 add、contain 操作效率為 O(logN)。
Queue:主要實現類有
- LinkedList:用來實現棧、佇列和雙向佇列。
- PriorityQueue:基於堆實現,可用來實現優先佇列。
Map
![img](https://i.iter01.com/images/070cfcc15beb2c56b699327dbe7a00842ac640d900fd337866ca288b99f6e0b6.webp)
Map 儲存鍵值對,主要實現類有:
- Hashtable:基於雜湊表實現,不支援 null 鍵和值,由於同步導致效能較差,不推薦使用。
- HashMap:與 Hashtable 類似,基於雜湊表實現,但支援 null 鍵和值,並且不是執行緒安全的,效能更好;雜湊正常時,能提供常數時間的 put / get 操作,但不保證有序;如果需要滿足執行緒安全,可以用 Collections.synchronizedMap() 使 HashMap 具備執行緒安全的能力,或者直接用效能更好的 ConcurrentHashMap。
- LinkedHashMap:HashMap 的子類,底層使用雙向連結串列維護元素插入的順序,也可以構造時設定 accessOrder 為 true,轉換成訪問順序;同時能提供常數時間的 put / get 操作,但效能略低於 HashMap,因為有需要維護連結串列的開銷。
- TreeMap:基於紅黑樹實現,支援順序訪問,預設按鍵值升序,也可以由指定的 Comparator 來決定,但 put / get 效率為 O(logN);使用時,key 必須實現 Comparable 介面或者在構造時傳入指定的 Comparator,否則執行時會丟擲 ClassCastException。
對於這些 Map,都要求 key 是不可變物件,確保建立後它的雜湊值不變;
因為如果發生改變,Map 就可能定位不到對映的位置。
相關文章
- Java 集合概述Java
- java集合概述Java
- 【JAVA】筆記(12)---集合(1)-概述篇Java筆記
- 【java】【集合】陣列和集合的基本概述Java陣列
- Java集合 - 集合知識點總結概述Java
- Java集合類的概述Java
- Java 集合類——Collections(1)Java
- 集合框架體系概述框架
- 【Java集合原始碼剖析】Java集合框架Java原始碼框架
- 【JAVA集合】JAVA集合框架及其常用方法Java框架
- java集合Java
- Java集合詳解(一):全面理解Java集合Java
- Java集合原始碼學習(1)介面Java原始碼
- Java 集合(1)之 總體架構Java架構
- 集合類【Java】Java
- 【java】【集合】TreeSetJava
- JAVA集合-ArrayListJava
- Java集合——LinkedHashMapJavaHashMap
- 探究Java集合Java
- Java集合大全Java
- Java集合——ArrayListJava
- Java集合——LinkedListJava
- 六,Java集合Java
- java集合框架Java框架
- Java 集合框架Java框架
- JAVA_集合Java
- Java集合-CollectionJava
- java集合-ListJava
- Java集合:HashMapJavaHashMap
- cats 的集合 1
- Java集合之HashMapJavaHashMap
- Java 集合之ArrayListJava
- Java集合之LinkedHashMapJavaHashMap
- Java013-集合Java
- Java 集合之LinkedListJava
- Java集合類——MapJava
- java集合之CopyOnWriteArrayListJava
- Java集合——TreeMap(一)Java