Queue,Deque 詳細講解

2021-09-20 06:37:24 字數 2395 閱讀 5839

概述

在處理元素前用於儲存元素的 collection。除了基本的 collection 操作外,佇列還提供其他的插入、提取和檢查操作。每個方法都存在兩種形式:一種丟擲異常(操作失敗時),另一種返回乙個特殊值(null 或 false,具體取決於操作)。插入操作的後一種形式是用於專門為有容量限制的 queue 實現設計的;在大多數實現中,插入操作不會失敗。

特點該介面是佇列介面的根介面,先進先出

該介面提供佇列相關兩種形式的方法,一種丟擲異常(操作失敗時),另一種返回乙個特殊值(null 或

false,具體取決於操作)。插入操作的後一種形式是用於專門為有容量限制的 queue 實現設計的;在大多數實現中,插入操作不會失敗。

常用方法

丟擲異常 返回特殊值

插入 add(e) offer(e)

移除 remove() poll()

檢查 element() peek()

示例**:

queuequeue = new arraydeque<>();

queue.add("a");

queue.add("b");

queue.add("c");

while (!queue.isempty())

// 或者

queue.offer("a");

queue.offer("b");

queue.offer("c");

while (!queue.isempty())

概述

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

特點deque是乙個queue的子介面,是乙個雙端佇列,支援在兩端插入和移除元素

deque支援索引值直接訪問。

deque頭部和尾部新增或移除元素都非常快速。但是在中部安插元素或移除元素比較費時。

插入、刪除、獲取操作支援兩種形式:快速失敗和返回null或true/false

不推薦插入null元素,null作為特定返回值表示隊列為空

常用方法

第乙個元素(頭部) 最後乙個元素(尾部)

丟擲異常 特殊值 丟擲異常 特殊值

插入 addfirst(e) offerfirst(e) addlast(e) offerlast(e)

移除 removefirst() pollfirst() removelast() polllast()

檢查 getfirst() peekfirst() getlast() peeklast()

雙向佇列操作

插入元素

addfirst(): 向隊頭插入元素,如果元素為null,則發生空指標異常

addlast(): 向隊尾插入元素,如果為空,則發生空指標異常

offerfirst(): 向隊頭插入元素,如果插入成功返回true,否則返回false

offerlast(): 向隊尾插入元素,如果插入成功返回true,否則返回false

移除元素

removefirst(): 返回並移除隊頭元素,如果該元素是null,則發生nosuchelementexception

removelast(): 返回並移除隊尾元素,如果該元素是null,則發生nosuchelementexception

pollfirst(): 返回並移除隊頭元素,如果佇列無元素,則返回null

polllast(): 返回並移除隊尾元素,如果佇列無元素,則返回null

獲取元素

getfirst(): 獲取隊頭元素但不移除,如果佇列無元素,則發生nosuchelementexception

getlast(): 獲取隊尾元素但不移除,如果佇列無元素,則發生nosuchelementexception

peekfirst(): 獲取隊頭元素但不移除,如果佇列無元素,則返回null

peeklast(): 獲取隊尾元素但不移除,如果佇列無元素,則返回null

棧操作pop(): 彈出棧中元素,也就是返回並移除隊頭元素,等價於removefirst(),如果佇列無元素,則發生nosuchelementexception

push(): 向棧中壓入元素,也就是向隊頭增加元素,等價於addfirst(),如果元素為null,則發生nosuchelementexception,如果棧空間受到限制,則發生illegalstateexception

引用場景

滿足fifo場景時

滿足lifo場景時,曾經在解析xml按標籤時使用過棧這種資料結構,但是卻選擇stack類,如果在進行棧選型時,更推薦使用deque類,應為stack是執行緒同步

UITableView 詳細講解

建立 uitableview datatable uitableview alloc initwithframe cgrectmake 0,0,320,420 datatable setdelegate self datatable setdatasource self self.view adds...

UITableView 詳細講解

建立 uitableview datatable uitableview alloc initwithframe cgrectmake 0,0,320,420 datatable setdelegate self datatable setdatasource self self.view adds...

const 詳細講解

const使用詳解 2005 11 15 16 47 02 關於c 中的const關鍵字的用法非常靈活,而使用const將大大改善程式的健壯性,現將本人的一些體會總結如下,期望對大家有所幫助 一 const基礎 如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況 int b 50...