Java容器隊列(二)-Deque(雙端隊列)

1 如何理解“雙端隊列”

Deque 全稱為double ended queue,即雙向隊列,相對于隊列它提供了更強(qiáng)大的功能.它允許在隊列兩側(cè)插入或刪除元素。因此deque實(shí)現(xiàn)不僅僅能能作為隊列【先進(jìn)先出FIFO(first in first out)】使用,還能作為棧【后入先出LIFO(last in first out)使用】。

2 Java中雙端隊列“接口”

Deque中定義的方法主要分為四部分,第一部分就如Deque定義所言,提供兩側(cè)插入或刪除的方法。第二部分是繼承自Queue的實(shí)現(xiàn)。第三部分表示如果要基于此實(shí)現(xiàn)一個Stack,需要實(shí)現(xiàn)的方法。最后一部分是繼承自Collection的方法

提供兩側(cè)插入或刪除的方法

//在隊首添加元素
void addFirst(E e);
//在隊首添加元素
boolean offerFirst(E e);

//在隊尾添加元素
void addLast(E e);
boolean offerLast(E e);

//刪除隊首元素
E removeFirst();
E pollFirst();

//刪除隊尾元素
E removeLast();
E pollLast();

//獲取隊首元素
E getFirst();
E peekFirst();

//獲取隊尾元素
E getLast();
E peekLast();

//刪除隊列中第一個發(fā)現(xiàn)o元素
boolean removeFirstOccurrence(Object o);
//刪除隊列中最后一個發(fā)現(xiàn)o元素
boolean removeLastOccurrence(Object o);

和隊列一樣這里添加、刪除、查詢這些個操作都提供了兩種形式。在操作失敗時直接拋出異常,而另一種則返回一個特殊的值

image

繼承自Queue的方法

Deque 繼承了父接口Queue所有方法,并對所有接口方法都可以通過自身定義兩側(cè)插入或刪除的方法來實(shí)現(xiàn).其對應(yīng)關(guān)系如下:

image

對應(yīng)源碼

    public boolean add(E e) {
        addLast(e);
        return true;
    }

實(shí)現(xiàn)Stack接口

雖然Deque提供的addFirst(),removeFirst()方法足以實(shí)現(xiàn)Stack功能,但Deque還是提供了針對Stack方法操作名稱相關(guān)的方法:

//與addFirst()等價
void push(E e);

//與removeFirst()等價
E pop();

繼承于Collection的方法

//順序是從隊首到隊尾
Iterator<E> iterator();

//順序是從隊尾到隊首
Iterator<E> descendingIterator();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • hashmap實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu),數(shù)組、桶等。 如圖所示 JDK 1.7,是以數(shù)組+鏈表組成的,鏈表為相同hash的鍵...
    不需要任何閱讀 942評論 0 1
  • 容器的概念所謂STL容器,即是將最常運(yùn)用的一些數(shù)據(jù)結(jié)構(gòu)(data structures)實(shí)現(xiàn)出來。容器是指容納特定...
    飯飯H閱讀 442評論 0 0
  • 移步數(shù)據(jù)結(jié)構(gòu)--容器匯總(java & Android)內(nèi)容: LinkedList 的概述 LinkedList...
    凱玲之戀閱讀 782評論 0 5
  • 集合框架體系概述 為什么出現(xiàn)集合類?方便多個對象的操作,就對對象進(jìn)行存儲,集合就是存儲對象最常用的一種方法. 數(shù)組...
    acc8226閱讀 915評論 0 1
  • 簡介 Queue,翻譯成隊列,是一種先進(jìn)先出(FIFO, First In First Out)的數(shù)據(jù)結(jié)構(gòu)。最先放...
    齊晉閱讀 2,650評論 0 4

友情鏈接更多精彩內(nèi)容