Java數據結構系列(6)——Deque的常見方法


1、介紹

一個線性 collection,支持在兩端插入和移除元素。名稱 deque 是“double ended queue(雙端隊列)”的縮寫,通常讀為“deck”。大多數 Deque 實現對於它們能夠包含的元素數沒有固定限制,但此接口既支持有容量限制的雙端隊列,也支持沒有固定大小限制的雙端隊列。

此接口定義在雙端隊列兩端訪問元素的方法。提供插入、移除和檢查元素的方法。每種方法都存在兩種形式:一種形式在操作失敗時拋出異常,另一種形式返回一個特殊值(nullfalse,具體取決於操作)。插入操作的后一種形式是專為使用有容量限制的 Deque 實現設計的;在大多數實現中,插入操作不能失敗。

2、常用方法

 

 此接口擴展了 Queue 接口。在將雙端隊列用作隊列時,將得到 FIFO(先進先出)行為。將元素添加到雙端隊列的末尾,從雙端隊列的開頭移除元素。從 Queue 接口繼承的方法完全等效於 Deque 方法,如下表所示: 

 

 雙端隊列也可用作 LIFO(后進先出)堆棧。應優先使用此接口而不是遺留 Stack 類。在將雙端隊列用作堆棧時,元素被推入雙端隊列的開頭並從雙端隊列開頭彈出。堆棧方法完全等效於 Deque 方法,如下表所示: 

注意,在將雙端隊列用作隊列或堆棧時,peek 方法同樣正常工作;無論哪種情況下,都從雙端隊列的開頭抽取元素。

此接口提供了兩種移除內部元素的方法:removeFirstOccurrenceremoveLastOccurrence

List 接口不同,此接口不支持通過索引訪問元素。

雖然 Deque 實現沒有嚴格要求禁止插入 null 元素,但建議最好這樣做。建議任何事實上允許 null 元素的 Deque 實現用戶最好 要利用插入 null 的功能。這是因為各種方法會將 null 用作特殊的返回值來指示雙端隊列為空。

Deque 實現通常不定義基於元素的 equalshashCode 方法,而是從 Object 類繼承基於身份的 equalshashCode 方法。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM