【Java集合原始碼剖析】Java集合框架
轉載輕註明出處:http://blog.csdn.net/ns_code/article/details/35564663
Java集合工具包位於Java.util包下,包含了很多常用的資料結構,如陣列、連結串列、棧、佇列、集合、雜湊表等。學習Java集合框架下大致可以分為如下五個部分:List列表、Set集合、Map對映、迭代器(Iterator、Enumeration)、工具類(Arrays、Collections)。
Java集合類的整體框架如下:
從上圖中可以看出,集合類主要分為兩大類:Collection和Map。
Collection是List、Set等集合高度抽象出來的介面,它包含了這些集合的基本操作,它主要又分為兩大部分:List和Set。
List介面通常表示一個列表(陣列、佇列、連結串列、棧等),其中的元素可以重複,常用實現類為ArrayList和LinkedList,另外還有不常用的Vector。另外,LinkedList還是實現了Queue介面,因此也可以作為佇列使用。
Set介面通常表示一個集合,其中的元素不允許重複(通過hashcode和equals函式保證),常用實現類有HashSet和TreeSet,HashSet是通過Map中的HashMap實現的,而TreeSet是通過Map中的TreeMap實現的。另外,TreeSet還實現了SortedSet介面,因此是有序的集合(集合中的元素要實現Comparable介面,並覆寫Compartor函式才行)。
我們看到,抽象類AbstractCollection、AbstractList和AbstractSet分別實現了Collection、List和Set介面,這就是在Java集合框架中用的很多的介面卡設計模式,用這些抽象類去實現介面,在抽象類中實現介面中的若干或全部方法,這樣下面的一些類只需直接繼承該抽象類,並實現自己需要的方法即可,而不用實現介面中的全部抽象方法。
Map是一個對映介面,其中的每個元素都是一個key-value鍵值對,同樣抽象類AbstractMap通過介面卡模式實現了Map介面中的大部分函式,TreeMap、HashMap、WeakHashMap等實現類都通過繼承AbstractMap來實現,另外,不常用的HashTable直接實現了Map介面,它和Vector都是JDK1.0就引入的集合類。
Iterator是遍歷集合的迭代器(不能遍歷Map,只用來遍歷Collection),Collection的實現類都實現了iterator()函式,它返回一個Iterator物件,用來遍歷集合,ListIterator則專門用來遍歷List。而Enumeration則是JDK1.0時引入的,作用與Iterator相同,但它的功能比Iterator要少,它只能再Hashtable、Vector和Stack中使用。
Arrays和Collections是用來運算元組、集合的兩個工具類,例如在ArrayList和Vector中大量呼叫了Arrays.Copyof()方法,而Collections中有很多靜態方法可以返回各集合類的synchronized版本,即執行緒安全的版本,當然了,如果要用執行緒安全的結合類,首選Concurrent併發包下的對應的集合類。
相關文章
- Java集合原始碼剖析——ArrayList原始碼剖析Java原始碼
- Java 集合框架------ArrayList原始碼分析Java框架原始碼
- 【JAVA集合】JAVA集合框架及其常用方法Java框架
- Java集合類原始碼Java原始碼
- java集合框架Java框架
- Java 集合框架Java框架
- Java集合原始碼探究~ListJava原始碼
- 【Java原始碼】集合類-ArrayDequeJava原始碼
- JAVA集合:LinkedList原始碼解析Java原始碼
- JAVA集合:ArrayList原始碼分析Java原始碼
- 【Java集合】ArrayList原始碼分析Java原始碼
- Java集合Stack原始碼深入解析Java原始碼
- Java集合之Hashtable原始碼解析Java原始碼
- Java 集合Hashtable原始碼深入解析Java原始碼
- Java集合之ArrayList原始碼解析Java原始碼
- Java集合之LinkedList原始碼解析Java原始碼
- Java集合原始碼分析(十四):TreeMapJava原始碼
- java集合原始碼分析(三):ArrayListJava原始碼
- Java集合原始碼分析(九)——HashSetJava原始碼
- java集合原始碼分析(六):HashMapJava原始碼HashMap
- Java基礎-集合框架Java框架
- JAVA集合框架 - Map介面Java框架
- Java集合框架隨筆Java框架
- Java集合框架學習Java框架
- Java集合框架(一)-ArrayListJava框架
- Java集合原始碼學習(4)HashSetJava原始碼
- Java集合原始碼學習(5)HashMapJava原始碼HashMap
- Java集合(6)之 HashMap 原始碼解析JavaHashMap原始碼
- Java 集合系列之 LinkedList原始碼分析Java原始碼
- Java集合乾貨——CopyOnWriteArrayList原始碼分析Java原始碼
- Java集合原始碼學習(2)ArrayListJava原始碼
- Java集合原始碼學習(3)LinkedListJava原始碼
- Java集合原始碼分析之開篇Java原始碼
- Java集合原始碼學習(1)介面Java原始碼
- Java 集合系列:Vector原始碼深入解析Java原始碼
- JAVA ArrayList集合底層原始碼分析Java原始碼
- java集合框架--HashMap--putJava框架HashMap
- Java集合中的框架2Java框架