Deque
全稱為double ended queue
,即雙向隊(duì)列,它允許在兩側(cè)插入或刪除元素斑匪,同時(shí)也建議我們不要向其中插入null值。除此之外锋勺,其余特性則和父級(jí)Queue
類似蚀瘸。Deque
大多數(shù)情況下不會(huì)限制元素的數(shù)量,但這不是必須的庶橱。
Deque
中定義的方法主要分為四部分贮勃,第一部分就如Deque
定義所言,提供兩側(cè)插入或刪除的方法苏章。第二部分是繼承自Queue
的實(shí)現(xiàn)寂嘉。第三部分表示如果要基于此實(shí)現(xiàn)一個(gè)Stack
,需要實(shí)現(xiàn)的方法枫绅。最后一部分是繼承自Collection
的方法撮奏。
兩側(cè)插入给涕、刪除
這里方法和Queue
定義方式一致,但卻是針對(duì)兩側(cè)插入刪除的林艘。
//在隊(duì)首添加元素
void addFirst(E e);
//在隊(duì)首添加元素
boolean offerFirst(E e);
//在隊(duì)尾添加元素
void addLast(E e);
boolean offerLast(E e);
//刪除隊(duì)首元素
E removeFirst();
E pollFirst();
//刪除隊(duì)尾元素
E removeLast();
E pollLast();
//獲取隊(duì)首元素
E getFirst();
E peekFirst();
//獲取隊(duì)尾元素
E getLast();
E peekLast();
//刪除第一個(gè)事件瓢娜,大多數(shù)指的是刪除第一個(gè)和 o equals的元素
boolean removeFirstOccurrence(Object o);
//刪除最后一個(gè)事件审胚,大多數(shù)指的是刪除最后一個(gè)和 o equals的元素
boolean removeLastOccurrence(Object o);
與Queue對(duì)應(yīng)的方法
因?yàn)镼ueue遵循FIFO
茬故,所以其方法在Deque
中對(duì)應(yīng)關(guān)系有所改變虎谢,結(jié)合Deque
的定義,我們很容易就想到它們的對(duì)應(yīng)關(guān)系:
//與addLast(E e)等價(jià)
boolean add(E e);
//與offerLast(E e)等價(jià)
boolean offer(E e);
//與removeFirst()等價(jià)
E remove();
//與pollFirst()等價(jià)
E poll();
//與getFirst()等價(jià)
E element();
//與peekFirst()等價(jià)
E peek();
實(shí)現(xiàn)Stack
Stack僅在一側(cè)支持插入刪除操作等操作酬诀,遵循LIFO
原則。
//與addFirst()等價(jià)
void push(E e);
//與removeFirst()等價(jià)
E pop();
繼承于Collection的方法
這里主要關(guān)注兩個(gè)方法骆撇。
//順序是從隊(duì)首到隊(duì)尾
Iterator<E> iterator();
//順序是從隊(duì)尾到隊(duì)首
Iterator<E> descendingIterator();
好了瞒御,這個(gè)接口是不是相當(dāng)簡(jiǎn)單呢?接下來(lái)我們就看看一個(gè)真正的實(shí)現(xiàn)類神郊,ArrayDeque
肴裙,的具體內(nèi)容吧趾唱。
上一篇:Java集合源碼分析之Queue(一):超級(jí)接口Queue
下一篇:Java集合源碼分析之Queue(三):ArrayDeque
我是飛機(jī)醬,如果您喜歡我的文章蜻懦,可以關(guān)注我~
編程之路甜癞,道阻且長(zhǎng)。唯宛乃,路漫漫其修遠(yuǎn)兮悠咱,吾將上下而求索。