1. 程式人生 > 實用技巧 >Java的Deque分析

Java的Deque分析

1.概述

Java中實際上提供了java.util.Stack來實現棧結構,但官方目前已不推薦使用,而是使用java.util.Deque雙端佇列來實現佇列與棧的各種需求.如下圖所示java.util.Deque的實現子類有java.util.LinkedListjava.util.ArrayDeque.顧名思義前者是基於連結串列,後者基於資料實現的雙端佇列.

2.功能對比

要講棧和佇列,首先要講Deque介面。Deque的含義是“double ended queue”,即雙端佇列,它既可以當作棧使用,也可以當作佇列使用。


第一個元素 (頭部)
最後一個元素 (尾部)
丟擲異常 特殊值 丟擲異常 特殊值
插入 addFirst(e) offerFirst(e) addLast(e) offerLast(e)
刪除 removeFirst() pollFirst() removeLast() pollLast()
檢查 getFirst() peekFirst() getLast() peekLast()

下表列出了Deque與Queue相對應的介面:

下表列出了Deque與Stack對應的介面:

上面兩個表共定義了Deque的12個介面。新增,刪除,取值都有兩套介面,它們功能相同,區別是對失敗情況的處理不同。一套介面遇到失敗就會丟擲異常,另一套遇到失敗會返回特殊值(false或null)。除非某種實現對容量有限制,大多數情況下,新增操作是不會失敗的。雖然Deque的介面有12個之多,但無非就是對容器的兩端進行操作,或新增,或刪除,或檢視。明白了這一點講解起來就會非常簡單。

3.使用