編程體系結構(03):Java集合容器

本文源碼:GitHub·點這裡 || GitEE·點這裡

一、集合容器簡介

集合容器是Java開發中最基礎API模組,通常用來存儲運行時動態創建的元素,基本特點如下:

  • 泛型特點,存儲任意類型對象;
  • 動態擴容,存儲任意數量對象;

這裡對存儲數量是受到程式和記憶體等環境制約的,從List的get()方法中可以看出,index的範圍是Integer.MAX_VALUE。

二、API體系

三大核心介面:List、Set繼承Collection, Map獨立介面

List與Set體系

List體系核心API:ArrayList,LinkedList、Vector

Set體系核心API:HashSet、TreeSet、LinkedHashSet

Queue隊列API:PriorityQueue、LinkedHashSet

Map體系

Map體系核心API:HashMap、LinkedHashMap、TreeMap、Hashtable

三、基礎容器詳解

1、核心內容

  • 元素存儲,增刪改查判斷等基礎用法
  • API方法中執行緒安全問題
  • 容器初始化大小與動態擴容機制
  • 底層數據結構特點
  • 同一介面或者不同介面體系容器對比

基本熟練使用並理解集合容器,需要知道如上幾塊內容:API基礎用法,執行緒安全問題;容器大小與擴容;結構特點,數組、鏈表、哈希表;

2、API體系詳解

Collection:集合容器的根介面,定義公共方法;

List體系

  • ArrayList

維護Object數組實現,特點:查詢快,增刪慢,非執行緒安全,所以效率高。

  • LinkedList

底層維護鏈表數據結構實現,特點:查詢慢,增刪快,非執行緒安全,所以效率高。

  • Vector

底部維護Object數組,實現和ArrayList一樣,但是Vector是執行緒安全,效率低。

Set體系

  • HashSet

底層是使用了哈希表來支援的,特點:存取速度快,元素唯一且無序。

  • LinkedHashSet

底層數據結構是鏈表和哈希表,鏈表保證元素有序性,哈希表保證元素唯一性,非執行緒安全。

  • TreeSet

數據結構是紅黑樹,如果元素具備自然順序的特性,那麼就按照元素自然順序的特性進行排序,或者基於比較器自定義排序。

Map體系:

Map介面的實現類,具備的特點:存儲的數據都是以鍵值對的方式,鍵不可以重複,值可重複。

  • HashMap

底層使用hashCode表來實現向HashMap中添加元素,允許使用null值和null鍵,不保證元素的順序固定。

  • TreeMap

TreeMap:基於二叉樹的數據結構實現的,會對具備自然特性的鍵進行排序存儲:元素的鍵具備自然特性,直接排序存儲;不具備自然特性,實現Comparable介面,在ComparaTo中定義排序規則。

  • HashTable

執行緒安全,相對效率低,不允許使用null值。

3、容器遍歷

  • 基於for、foreach、while流程式控制制
  • Iterable迭代器核心介面
  • Lambda表達式:遍歷、分組、查詢

四、源程式碼地址

GitHub·地址
//github.com/cicadasmile
GitEE·地址
//gitee.com/cicadasmile

推薦閱讀:架構設計系列

標題
架構設計:單服務.集群.分散式,基本區別和聯繫
架構設計:分散式業務系統中,全局ID生成策略
架構設計:分散式系統調度,Zookeeper集群化管理
架構設計:介面冪等性原則,防重複提交Token管理
架構設計:快取管理模式,監控和記憶體回收策略
架構設計:非同步處理流程,多種實現模式詳解
架構設計:高並發流量削峰,共享資源加鎖機制
架構設計:分散式服務,庫表拆分模式詳解
架構設計:分散式事務①概念簡介和基礎理論
架構設計:基於電商交易流程,圖解TCC事務分段提交
架構設計:基於消息中間件,圖解柔性事務一致性