Java集合源碼剖析:Java集合架構

來源:互聯網
上載者:User

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介面,因此也可以作為隊列使用。

本欄目更多精彩內容:http://www.bianceng.cn/Programming/Java/

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並發包下的對應的集合類。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.