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

本文源碼:GitHub·點這裏 || GitEE·點這裏git

1、集合容器簡介

集合容器是Java開發中最基礎API模塊,一般用來存儲運行時動態建立的元素,基本特色以下:github

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

這裏對存儲數量是受到程序和內存等環境制約的,從List的get()方法中能夠看出,index的範圍是Integer.MAX_VALUE。數組

2、API體系

三大核心接口:List、Set繼承Collection, Map獨立接口緩存

List與Set體系安全

image

List體系核心API:ArrayList,LinkedList、Vector數據結構

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

Queue隊列API:PriorityQueue、LinkedHashSet併發

Map體系異步

image

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

3、基礎容器詳解

一、核心內容

image

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

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

二、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值。

三、容器遍歷

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

4、源代碼地址

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

推薦閱讀:架構設計系列

架構設計

標題
架構設計:單服務.集羣.分佈式,基本區別和聯繫
架構設計:分佈式業務系統中,全局ID生成策略
架構設計:分佈式系統調度,Zookeeper集羣化管理
架構設計:接口冪等性原則,防重複提交Token管理
架構設計:緩存管理模式,監控和內存回收策略
架構設計:異步處理流程,多種實現模式詳解
架構設計:高併發流量削峯,共享資源加鎖機制
架構設計:分佈式服務,庫表拆分模式詳解
架構設計:分佈式事務①概念簡介和基礎理論
架構設計:基於電商交易流程,圖解TCC事務分段提交
架構設計:基於消息中間件,圖解柔性事務一致性
相關文章
相關標籤/搜索