3、List介面
4、Queue介面
Queue用於類比了隊列這種資料結構,隊列通常是指“先進先出”(FIFO)的容器。隊列的頭部儲存在隊列中時間最長的元素,隊列的尾部儲存在隊列中時間最短的元素。新元素插入(offer)到隊列的尾部,訪問元素(poll)操作會返回隊列頭部的元素.通常,隊列不允許隨機訪問隊列中的元素。
Queue介面中定義了如下幾個方法:
》void add(Object e):將指定元素加入此隊列的尾部。
》Objeot element():擷取隊列頭部的元素,但是不刪除該元素。
》boolean Offer(Object e):將指定元素加入此隊列的尾部。當使用有容量限制的隊列時,此方法通常比add(Object e)方法更好。
》Object peek():擷取隊列頭部的元素,但是不刪除該元素。如果此隊列為空白,則返回null。
》Object poll():擷取隊列頭部的元素,並刪除該元素。如果此隊列為空白,則返回null。
》Object remove():擷取隊列頭部的元素,並刪除該元素。
Queue有兩個常用的實作類別:LinkedList和PriorityQueue,LinkedList功能比較強大,它是一個雙向隊列,而且可以當成“棧”來使用,因為該類裡包含了pop(出棧)和push(入棧)兩個方法,除此之外還可以看出它還實現了List介面,所以還可以當成List使用。但是因為LinkedList的實現機制不同於ArrayList和Vector,它內部以列表的形式來儲存集合中的元素,因此在隨機訪問集合元素時效能較差,不過插入、刪除元素時效能非常好(只改變指標所指的地址即可),實際上Vector因為實現了同步功能,所以效能上也落後於ArrayList,所以我們更多的使用的是ArrayList實作類別。我們一般在有特殊要求的時候再去考慮使用LinkedList。至於PriorityQueue是一個比較標準的隊列實作類別,它對元素的要求與前面TreeSet要求基本一致,這裡就不多解釋了。
5、Map介面
6、操作集合工具類:Collections
Java提供了一個操作set、List和Map等集合的工具類:collections,該工具類裡提供了大量方法
對集合元素進行排序、查詢和修改等操作,還提供了將集合對象設定為不可變、對集合對象實現同步
控制等方法,這樣就彌補了HashMap、ArrayList等不能同步的缺陷。
排序操作——Collections提供了如下幾個方法用於對List集合元素進行排序:
》static void reverse(List Iist):反轉指定List集合中元素的順序。
》static void shuffle(List list):對List集合元素進行隨機排序(shuffle方法類比了“洗牌”動作)。
》static void sort(List list):根據元素的自然順序對指定List集合的元素按升序進行排序。
》static void sort(List Iist, Comparator c):根據指定Comparator產生的順序對List集合的元素進行排序。
》static void swap(List list, int i, int j):將指定List集合中 i 處元素和 j 處元素進行交換.
》static void rotate(List Iist ,int distance):將指定集合中i處元素和list.length一1 -i處的元素進行交換。
尋找,替換操作——Collections還提供了如下用於尋找、替換集合元素的常用方法:
》static int binarySearch(List list, Object key):使用二分搜尋法搜尋指定List集合,以獲得指定對象在List集合中的索引。如果要該方法可以正常工作,必須保證List中的元素己經處於有序狀態。
》static Object max(Collection coll):根據元素的自然順序,返回給定集合中的最大元素。
》static Object max(Collection coll, Comparator comp):根據指定Comparator產生的順序,返回給定集合的最大元素。
》static Object min(ColIection coll):根據元素的自然順序,返回給定集合中的最小元素.
》static Object min(Collection coll, Comparator comp):根據指定Comparator產生的順序,返回給定集合的最小元素。
》static void fill(List Iist, Object obj):使用指定元素obj替換指定List集合中的所有元素。
》static int frequency(Collection c, object o):返回指定集合中等於指定對象的元素數量。
》stetic int indexOfSubList(List source, List target):返回子List對象在母List對象中第一次出現的位置索引;如果母Liat中沒有出現這樣的子List,則返回-1。
》stetic int IastlndexOfSubList(List source,List target):返回子List對象在母List對象中最後一次出現的位置索引:如果母List中沒有出現這樣的子Liat,則返回-1。
》static boolean replaceAll(List Iist, Object oldVal, Object newVal):使用一個新值newVal替換List對象所有的舊值oldVal。
同步控制:
Collections類中提供了多個synchronizedXxx方法,該方法返回指定集合對象對應的同步對象,從而可以解決多線程並發訪問集合時的安全執行緒問題。如下面的練習:
public class TestSynchronized{public static void main(String[] args){//下面程式建立了四個同步的集合對象Collection C = Collections.synchronizedCollection(new ArrayList());List list = Collections.synchronizedList(new ArrayList());Set s = Collections.synchronizedSet(new Hashset());Map m = Collections.synchronlzedMap(new HashMap());}}
設定不可變集合——Collections提供了如下三類方法來返回一個不可變的集合:
》emptyXxx():返回一個空的、不可變的集合對象,此處的集合既可以是List,也可以是Set,還可是Map。
》SingletonXxX():返回一個只包含指定對象(只有一個或一項元素)的、不可變的集合對象,此處的集合既可以是List,也可以是Set,還可以是Map。
》unmodifiableXxx:返回指定集合對象的不可變視圖。此處的集合既可以是List,也可以是Set,還可以是Map。
到此java集合就算基本介紹完了,更加深入的我們會參考API文檔即可...