天天看點

Java中常用集合關系、資料結構(UML類圖詳細展示)

Java中常用集合關系、資料結構(UML類圖詳細展示)

Java中常用集合的關系和資料結構的不同(UML類圖詳細展示)

  • ​​寫在前面,List 和 Map 和 Arrays是完全沒有關系的​​
  • ​​一、Collection下所有常用的集合類圖展示​​
  • ​​1.1、UML類圖展示​​
  • ​​1.2、差別​​
  • ​​1.3、API差別​​
  • ​​二、Map 下所有常用的集合類圖展示​​
  • ​​2.1、差別​​
  • ​​2.2、API差別​​

寫在前面,List 和 Map 和 Arrays是完全沒有關系的

Java中常用集合關系、資料結構(UML類圖詳細展示)
Java中常用集合關系、資料結構(UML類圖詳細展示)

一、Collection下所有常用的集合類圖展示

1.1、UML類圖展示

Java中常用集合關系、資料結構(UML類圖詳細展示)

1.2、差別

  1. List,有序,可重複,可以疊代也可以直接根據下标擷取元素。Set無序,不可重複,,隻能用疊代擷取元素。不能直接周遊集合擷取
  2. ArrayList ,基于數組實作的非線程安全的集合。查詢元素快,插入,删除中間元素慢。

    初始容量 10 ,擴容機制 L *3/2+1

  3. LinkedList ,基于連結清單實作的非線程安全的集合。查詢元素慢,插入,删除中間元素快。
  4. Vector,提供了随機通路功能,在Vector中,我們即可以通過元素的序号快速擷取元素對象,線程安全的。
  5. HashSet,使用HASH算法來存儲集合中的元素,是以具有良好的存取和查找性能。當向HashSet集合中存入一個元素時,HashSet會調用該對象的hashCode()方法來得到該對象的hashCode值,然後根據該HashCode值決定該對象在HashSet中的存儲位置。值得主要的是,HashSet集合判斷兩個元素相等的标準是兩個對象通過equals()方法比較相等,并且兩個對象的hashCode()方法的傳回值相等。
  6. SortedSet:此接口主要用于排序操作,即實作此接口的子類都屬于排序的子類
  7. TreeSet:TreeSet是SortedSet接口的實作類,TreeSet可以確定集合元素處于排序狀态。

1.3、API差別

List下的幾個類,大緻相同

Java中常用集合關系、資料結構(UML類圖詳細展示)

HashSet API

Java中常用集合關系、資料結構(UML類圖詳細展示)

treeSet API

Java中常用集合關系、資料結構(UML類圖詳細展示)

EnumSet,不常用,下次抽時間學習一下

二、Map 下所有常用的集合類圖展示

Java中常用集合關系、資料結構(UML類圖詳細展示)

2.1、差別

  1. HashMap使用位桶和連結清單實作(最近的jdk1.8改用紅黑樹存儲而非連結清單),它是線程不安全的Map,方法上都沒有synchronize關鍵字修飾,但實作效率較快。
  2. hashTable是線程安全的一個map實作類,它實作線程安全的方法是在各個方法上添加了synchronize關鍵字。但實作效率較慢。
  3. ConcurrentHashMap,這個map實作類是在jdk1.5中加入的,其在jdk1.6/1.7中的主要實作原理是segment段鎖,它不再使用和HashTable一樣的synchronize一樣的關鍵字對整個方法進行枷鎖,而是轉而利用segment段落鎖來對其進行加鎖,以保證Map的多線程安全。
  4. WeakHashMap,和HashMap一樣,也是一個散清單,它存儲的内容也是鍵值對(key-value)映射,而且鍵和值都可以是null,不過WeakHashMap的鍵是“弱鍵”。在 WeakHashMap 中,當某個鍵不再正常使用時,會被從WeakHashMap中被自動移除。更精确地說,對于一個給定的鍵,其映射的存在并不阻止垃圾回收器對該鍵的丢棄,這就使該鍵成為可終止的,被終止,然後被回收。某個鍵被終止時,它對應的鍵值對也就從映射中有效地移除了。
  5. TreeMap,基于紅黑樹算法實作,與HashMap相比,它是一個能比較元素大小的Map集合,會對傳入的key進行了大小排序。其中,可以使用元素的自然順序,也可以使用集合中自定義的比較器來進行排序;不同于HashMap的哈希映射,TreeMap底層實作了樹形結構,至于具體形态,你可以簡單的了解為一顆倒過來的樹—根在上–葉在下。如果用計算機術語來說的話,TreeMap實作了紅黑樹的結構,形成了一顆二叉樹。

2.2、API差別

HashMap API

Java中常用集合關系、資料結構(UML類圖詳細展示)

hashTable,線程安全的 HashMap,API基本和HashMap一樣

ConcurrentHashMap API

Java中常用集合關系、資料結構(UML類圖詳細展示)

ConcurrentMap(接口) API,線程安全和原子性操作

Java中常用集合關系、資料結構(UML類圖詳細展示)

LinkedHashMap API,無序的HashMap

Java中常用集合關系、資料結構(UML類圖詳細展示)

WeakHashMap API

繼續閱讀