天天看點

程式設計體系結構(03):Java集合容器一、集合容器簡介二、API體系三、基礎容器詳解四、源代碼位址

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

一、集合容器簡介

集合容器是Java開發中最基礎API子產品,通常用來存儲運作時動态建立的元素,基本特點如下:

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

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

二、API體系

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

List與Set體系

程式設計體系結構(03):Java集合容器一、集合容器簡介二、API體系三、基礎容器詳解四、源代碼位址

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

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

Queue隊列API:PriorityQueue、LinkedHashSet

Map體系

程式設計體系結構(03):Java集合容器一、集合容器簡介二、API體系三、基礎容器詳解四、源代碼位址

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

三、基礎容器詳解

1、核心内容

程式設計體系結構(03):Java集合容器一、集合容器簡介二、API體系三、基礎容器詳解四、源代碼位址
  • 元素存儲,增删改查判斷等基礎用法
  • 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·位址
https://github.com/cicadasmile
GitEE·位址
https://gitee.com/cicadasmile