前言:
- Java, Android 開發(fā)也X年有余了梨与,只是平時寫業(yè)務居多捡硅,對java 集合技術只是看看秉继,未有總結(jié)潘明,基礎不夠扎實。雖然集合框架經(jīng)常用秕噪,但是我們還是要仔細看看原理钳降,不僅要會用,也要知道為什么要這么用腌巾,夯實基礎遂填,才能突破自己技術瓶頸。
Java集合簡介:
- Java集合是java提供的工具包:
包含了常用的數(shù)據(jù)結(jié)構(gòu):數(shù)組澈蝙、鏈表吓坚、隊列、棧灯荧、映射等礁击。工具包位置是java.util.*。
Java集合主要可以劃分為 5個部分 :
List列表、Set集合哆窿、Map映射链烈、迭代器(Iterator、Enumeration)挚躯、工具類(Arrays和Collections)强衡。
**Java集合整體框架圖(如下) 一圖勝千言 **:
說明:
從上面整體結(jié)構(gòu)圖可以看出:集合類主要分為兩大類:Collection和Map。
-
Collection 是高度抽象出來的一個接口码荔,它包含了集合的基本操作和屬性漩勤。
Collection主要分為List和Set兩大分支。
(1)List 是一個接口缩搅,表示一個列表越败;
每一個元素都有它的索引。第一個元素的索引值是0硼瓣,其中的元素可以重復眉尸;它的實現(xiàn)類主要有 ArrayList、LinkedList巨双、Stack噪猾、 Vector ;其中 LinkedList還是實現(xiàn)了Queue接口,因此也可以作為隊列使用筑累。
(2) Set 接口是一個不允許有重復元素的集合(通過hashcode和equals函數(shù)保證)袱蜡。
Set的實現(xiàn)類有HastSet和TreeSet;HashSet是通過Map中的HashMap實現(xiàn)的慢宗;TreeSet 是通過Map中的TreeMap實現(xiàn)的坪蚁;TreeSet還實現(xiàn)了SortedSet接口,因此是有序的集合镜沽。
Map 是一個映射接口敏晤,其中的每個元素都是一個key-value鍵值對;AbstractMap實現(xiàn)了Map接口中的大部分函數(shù)缅茉,TreeMap嘴脾、HashMap、WeakHashMap等實現(xiàn)類都通過繼承AbstractMap來實現(xiàn)蔬墩; Hashtable雖然繼承于Dictionary译打,但它實現(xiàn)了Map接口。
迭代器
Iterator 是遍歷集合的迭代器(不能遍歷Map拇颅,只用來遍歷Collection)奏司,從上圖可以看到Collection依賴 于Iterator,是因為Collection的實現(xiàn)類都要實現(xiàn)iterator()函數(shù)樟插,返回一個Iterator對象韵洋。
ListIterator 是專門為遍歷List而存在的竿刁。
Enumeration 是JDK 1.0引入的抽象類。作用和Iterator一樣搪缨,也是遍歷集合食拜;但是Enumeration的功能要比Iterator少;它只能再Hashtable勉吻、Vector和Stack中使用。最后我們看看Arrays和Collections旅赢。它們是操作數(shù)組齿桃、集合的兩個工具類。
我們對上面的集合整體框架了解之后煮盼,我們接下來對每個類分別進行分析短纵。