Queue用於模擬隊列這種數據結構,隊列一般是指「先進先出」FIFO的容器,隊列的頭部保存在隊列中存放時間最長的元素,隊列的尾部保存在隊列中存放時間最短的元素。Queue接口中定義了以下幾個方法void add(Object e)將指定的元素加入到此隊列的尾部;Object element()獲取隊列頭部的元素,可是不刪除該元素。boolean offer(Object e):將指定的元素加入到此隊列的尾部。Object peek()獲取隊列的頭部元素,但不刪除該元素,若是隊列爲空返回null。Object poll()獲取隊列的頭部元素,並刪除該元素。若是隊列爲空返回null。Object remove():獲取隊列頭部的元素,並刪除該元素。Queue接口有一個priorityQueue實現類,除此以外Queue還有一個Deque的接口,Deque表明一個「雙端隊列」,雙端隊列能夠同時從兩端來添加、刪除元素,所以Deque的實現類便可當成隊列使用也能夠當成棧使用。數組
1.PriorityQueue是一個比較標準的隊列實現類,PriorityQueue保存隊列元素的順序並非按加入的隊列的順序,而是按照隊列元素大小進行從新排列。所以當代調用peek()方法或者poll()方法取出隊列的元素時,並非取出最早進入隊列的元素,而是取出隊列中最小的元素。PriorityQueue不容許插入null元素,PriorityQueue的元素有兩種排序方式,一種天然排序(必須實現Comparable接口)另一種定製排序(要傳入一個Comparator對象)安全
2.Deque接口是Queue接口的子接口,它表明這一個雙端的隊列,容許經過這些方法從兩端來操做元素,void addFrist(Object e)將指定元素插入該雙端隊列的開頭;void addLast(Object e)將指定的元素插入到雙端隊列的末尾;Iterator descendingIterator():返回該隊列對應的迭代器,該迭代器將逆向順序來迭代隊列的元素。Object getFrist()獲取但不能刪除雙端隊列的的一個元素,Object getLast()獲取但不刪除雙端元素的末尾隊列。Object peekFrist()獲取但不刪除雙端元素的第一個也元素。Object poolFrist()獲取並刪除雙端隊列的第一個元素。boolean offerFrist(Object e)將指定的元素插入到雙端隊列的開頭。Object pop():將一個元素push進該雙端隊列所表示的棧定頂。void push(Object e)將一個元素push進該雙端隊列所表示的棧的棧頂。Object removeFrist()獲取並刪除該雙端隊列的第一個元素。Object removeFristOccurrence(Object o)刪除該雙端隊列的第一次出現的元素o。Deque接口提供了一個典型的實現類:ArrayDeque,它是基於數組實現的雙端隊列,建立Deque時一樣可指定一個numElement參數指定數組的長度,Deque底層的數組的長度爲16,它底層也是一個動態的可重分配的Object[] 數組來存儲集合元素。ArrayDeque便可用作棧也可用做隊列來使用。數據結構
3.LinkedList類是List接口的實現類,這意味這能夠根據索引來隨機訪問數組元素,而它又實現了Deque接口,因此他也能夠當作雙端隊列來使用,所以既能夠當成棧也能夠當成隊列來使用。LinkedList做爲List集合、雙端隊列、棧用法,是一個功能很是強大的集合類。但LinkedList與ArrayList、ArrayDeque的實現機制徹底不一樣,ArrayList、ArrayDeque內部以數組的形式保存集合,隨機訪問元素性能較好,而LinkedList內部以鏈表的形式保存數據,隨機訪問性能較差,但插入、刪除元素性能較好,Vertor也是數組子形式存儲可是他線程安全因此性能都很差。性能