Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection接口
Collection是最基本的集合接口,一個(gè)Collection代表一組Object,即Collection的元素(Elements)。一些Collection允許相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接繼承自Collection的類(lèi),Java SDK提供的類(lèi)都是繼承自Collection的“子接口”如List和Set。
所有實(shí)現Collection接口的類(lèi)都必須提供兩個(gè)標準的構造函數:無(wú)參數的構造函數用于創(chuàng )建一個(gè)空的Collection,有一個(gè)Collection參數的構造函數用于創(chuàng )建一個(gè)新的Collection,這個(gè)新的Collection與傳入的Collection有相同的元素。后一個(gè)構造函數允許用戶(hù)復制一個(gè)Collection。
如何遍歷Collection中的每一個(gè)元素?不論Collection的實(shí)際類(lèi)型如何,它都支持一個(gè)iterator()的方法,該方法返回一個(gè)迭代子,使用該迭代子即可逐一訪(fǎng)問(wèn)Collection中每一個(gè)元素。典型的用法如下:
Iterator it = collection.iterator(); // 獲得一個(gè)迭代子
while(it.hasNext()) {
Object obj = it.next(); // 得到下一個(gè)元素
}
由Collection接口派生的兩個(gè)接口是List和Set。
List接口
List是有序的Collection,使用此接口能夠精確的控制每個(gè)元素插入的位置。用戶(hù)能夠使用索引(元素在List中的位置,類(lèi)似于數組下標)來(lái)訪(fǎng)問(wèn)List中的元素,這類(lèi)似于Java的數組。
和下面要提到的Set不同,List允許有相同的元素。
除了具有Collection接口必備的iterator()方法外,List還提供一個(gè)listIterator()方法,返回一個(gè)ListIterator接口,和標準的Iterator接口相比,ListIterator多了一些add()之類(lèi)的方法,允許添加,刪除,設定元素,還能向前或向后遍歷。
實(shí)現List接口的常用類(lèi)有LinkedList,ArrayList,Vector和Stack。
LinkedList類(lèi)
LinkedList實(shí)現了List接口,允許null元素。此外LinkedList提供額外的get,remove,insert方法在LinkedList的首部或尾部。這些操作使LinkedList可被用作堆棧(stack),隊列(queue)或雙向隊列(deque)。
注意LinkedList沒(méi)有同步方法。如果多個(gè)線(xiàn)程同時(shí)訪(fǎng)問(wèn)一個(gè)List,則必須自己實(shí)現訪(fǎng)問(wèn)同步。一種解決方法是在創(chuàng )建List時(shí)構造一個(gè)同步的List:
List list = Collections.synchronizedList(new LinkedList(...));
聯(lián)系客服