Java容器
集合是一種存盤資料的容器,是Java開發中使用最頻繁的物件型別之一.

或許提起Collection,都會第一時間意識到List和Set以及Map等相關關鍵詞,因為這幾乎是我們日常開發里接觸最多和遇見最頻繁的,以及與資料處理互動最多的Java物件型別,換句話說,就是我們與資料進行處理的資料物件存盤模型,但是:
List->[AbstractList,ArrayList,AbstractSeaquentialList,LinkedList]
Set->[AbstractSet,HashSet,SortedSet,TreeSet,LinkedHashSet]
Map->[AbstractMap,SortedMap,TreeMap,HashMap,LinkedHashMap,ConcurrentHashMap]
Collection容器



Collection容器包含List和Set以及Queue子容器,
List介面

List介面的實作類主要有:ArrayList、LinkedList、Stack以及Vector等
ArrayList[執行緒不安全]
- ArrayList-uml結構圖:

LinkedList
- LinkedList-uml結構圖:

Stack
- Stack-uml結構圖:

Vector
- Vector-uml結構圖:

Set容器

Set介面的實作類主要有:HashSet、TreeSet、LinkedHashSet等
Queue容器
Map容器

Map是一個鍵值對集合,存盤鍵、值和之間的映射,Key無序,唯一;value 不要求有序,允許重復,Map沒有繼承于Collection介面,從Map集合中時,只要給出鍵物件,就會回傳對應的值物件,
在使用Java開發分布式系統以及應對高并發場景的情況,看得最多的就是在并發場景中切忌使用HashMap,也是最近幾年面試熱題之一,主要原因:
- [1].在JDK1.8版本之前,并發場景使用HashMap會導致出現死回圈,從而導致CPU使用率會居高不下,這主要是JDK在設計HashMap擴容機制的局限導致,
- [2]在JDK1.8版本之后,雖然修復了HashMap擴容導致死回圈的問題,但是在高并發場景下,依然會出現資料丟失以及不準確的情況發生,
Map的常用實作類:HashMap、TreeMap、HashTable、LinkedHashMap、ConcurrentHashMap以及Properties等
HashMap[執行緒不安全]
-
HashMap-uml結構圖:

-
執行緒不安全主要體現在下面兩個方面:
[1].在JDK1.7中,當并發執行擴容操作時會造成環形鏈和資料丟失的情況
[2].在JDK1.8中,在并發執行put操作時會發生資料覆寫的情況
- HashMap的擴容條件:
HashMap有擴容機制,就是當達到擴容條件時會進行擴容:
[1].當HashMap中的元素個數(size)超過臨界值(threshold)時就會自動擴容,
[2].在HashMap中,threshold = loadFactor * capacity
TreeMap
- TreeMap-uml結構圖:

HashTable
- HashTable-uml結構圖:

ConcurrentHashMap[執行緒安全]
- ConcurrentHashMap-uml結構圖:

Properties
- Properties-uml結構圖:

Iterator容器

著作權宣告:本文為博主原創文章,遵循相關著作權協議,如若轉載或者分享請附上原文出處鏈接和鏈接來源,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/1041.html
標籤:架構設計
上一篇:微服務·API網關
下一篇:后端架構師學習路線
