JDK源碼學習之集合框架綜述

一、Java集合框架框圖

對於Java集合框架,在具體介紹某一類之前,先對其做一個整體的概述,以確保對其整體把握。已達到對Java集合框架的整體把握。廢話不多說,先上一張Java集合框架的框圖(不包含併發,有關併發後續再整理)。

 

 

 

                

對上圖做幾點簡要說明:藍顏色表示抽象類

 

  1. 主要包含三個頂層接口分別是 Map、Collection以及Iterator。
  2. Map接口的實現類包含了HashMap、Hashtable、TreeMap以及WeakHashMap。抽象類AbstractMap實現了Map的大部分API。
  3. Collection接口下有三個繼承接口List、Set、Queue。
  4. Set接口的實現類主要是TreeSet 和hashSet。
  5. List接口的實現類主要是ArrayList、LinkedList,還有Vector,常用棧和隊列。
  6. Queue以及繼承它的Dueue分別表示隊列和雙端隊列,主要實現類是LinkedList。相比於List和Set接口,Queue更傾向於是存儲數據而並非處理數據。
  7. Iterotor,迭代器是用來遍歷並選擇序列中的對象,而不必關心元素的數量,只要交給hasNext()和next()方法就可以了,但是隻能單向移動。ListIterator是一個更強大的Iterator的子類型,只能用於List類的訪問,可以雙向移動。
  8. Enumeration接口比Iterotor小。下面再講

 

二、接口說明

      1、Map接口

將對象映射到其他對象的能力是一種解決編程問題的殺手鐗,而Map就是解決此類問題的有力工具,表示了兩個對象之間的映射關係,存放的是鍵——值對,可以通過鍵來查找對應的值,因此鍵必須是唯一的不允許重複,但不同的鍵可以對應不同的值。

 

2、Collection接口

Collection中存放的都是“單個”數據,這是相對於Map中存放的鍵-—值對而言。下圖表示了可以通多Collection執行的所有操作,包括基本屬性,紅色箭頭表示繼承自Object和Iterator的方法。注意:其中不包含隨機訪問所選擇元素的get()方法,因爲Collection包括Set,而Set是自己維護內部順序的,因此如果想檢查Collection中的元素,那就必須使用迭代器。

AbstractCollection實現了Collection中的除Size()和iterator()以外的大部分方法。

 

3、Iterator接口

Iterotor,迭代器是用來遍歷並選擇序列中的對象,而不必關心元素的數量,只要交給hasNext()和next()方法就可以了,但是隻能單向移動。ListIterator是一個更強大的Iterator的子類型,只能用於List類的訪問,可以雙向移動。

 

4、Enumeration接口

 

Enumeration接口比Iterator小,只有兩個名字很長的方法,一個爲hasMoreElements()和nextElement()。在代碼中應該儘量使用Iterator,但是有時類庫也會返回一個Enumeration。

 

 

 

 

 

 

 

 

 

 

 

 

發佈了22 篇原創文章 · 獲贊 24 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章