標籤:工具類 mil href sdn java集合架構 arraylist hashtable src article
轉載輕註明出處: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集合原始碼剖析】Java集合架構