語言

IDeque 介面

定義

一個線性集合,支援元素兩端的插入與移除。

[Android.Runtime.Register("java/util/Deque", "", "Java.Util.IDequeInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public interface IDeque : IDisposable, Java.Interop.IJavaPeerable, Java.Util.IQueue, Java.Util.ISequencedCollection
[<Android.Runtime.Register("java/util/Deque", "", "Java.Util.IDequeInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "E" })>]
type IDeque = interface
    interface IQueue
    interface ICollection
    interface IIterable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ISequencedCollection
衍生
屬性
實作

備註

一個線性集合,支援元素兩端的插入與移除。 deque 這個名稱是「雙端排隊」的簡稱,通常發音為「deck」。 大多數 Deque 實作對元素數量沒有固定限制,但此介面支援容量限制的排隊,以及無固定大小限制的設定。

此介面定義了存取雙端元素的方法。 提供插入、移除及檢查元件的方法。 這些方法各有兩種形式:一種在操作失敗時拋出例外,另一種則回傳特殊值(視操作而定nullfalse或 )。 插入操作的後者是專門為容量受限 Deque 的實作設計;在大多數實作中,插入操作不會失敗。

上述十二種方法總結於下表:

<table class=“striped”>caption<Deque 方法>摘要/caption<>thead tr<>td<>rowspan=“2”</td><>th scope=“col” colspan=“2”< 第一元素(Head)>/th<>scope = “col” colspan=“2”< 最後元素(尾)>/<><>th, tr scope<>=“col” style=“font-weight:normal;font-style:italic”<擲出例外>/th<>scope =“col” style=“font-weight:<正常;font-style:italic“>Special value</th><th scope = ”col“ style=”font-weight:normal; font-style:italic“>擲出例外</th><scope =”col“ style=”font-weight:normal; font-style:italic“>Special value</th></tr></thead><tbody><tr><th scope=”row“>Insert</th><td>#addFirst(Object) addFirst(e)</td td/td><td/td>#offerFirst(Object) offerFirst(e)td td<><>#addLast(Object) addLast(e)</結束><td>#offerLast(Object) offerLast(e)</td></tr><tr th><scope = “row”> 移除</th><td>#removeFirst() removeFirst()</td><td>#pollFirst() pollFirst()</td><td>#removeLast() removeLast()</td td><>/td#pollLast() pollLast()<></tr><tr th><scope =“row”> Examine</th><td>#getFirst() getFirst()</td><td>#peekFirst() peekFirst()</td td/td td><>/td#getLast() getLast()<><TD>#peekLast() peekLast()</td></tr></tbody></table>

此介面延伸了介面 Queue 。 當 deque 被用作佇列時,會產生先入先出(FIFO,先First-Out入先入)行為。 元素會在 deque 結束時加入,並從開頭移除。 從 Queue 介面繼承的方法與下表所示方法完全等價 Deque :

<table class=“striped”>caption<排隊與 Deque 方法>比較/caption<>thead<>tr<>th scope=“col”<> 方法Queue/th<>th scope =“col”< 等效>方法Deque / th<>/tr<>/thead<>tbody<>tr<>th scope=“row”/<>#add(Object) add(e)th td<></>#addLast(Object) addLast(e)td/tr<>tr<>th scope = “row”<></th>#offer(Object) offer(e)<TD><>/TD#offerLast(Object) offerLast(e)</TR><TR tr><th scope=“row”><>/th#remove() remove()<td><>/td#removeFirst() removeFirst()</tr><tr th><scope =“row”><>/th#poll() poll()<td><>/td#pollFirst() pollFirst()</tr><tr th><scope = “row”><>/th#element() element()<td><>/td#getFirst() getFirst()</tr><tr th><scope = “row”><>/th#peek() peek()<><TD>#peekFirst() peekFirst()</td></tr></tbody></table>

Deques 也可以作為 LIFO(後入First-Out)堆疊使用。 此介面應優先使用,而非舊有 Stack 類別。 當 deque 作為堆疊使用時,元素會從 deque 的起點推開和彈出。 堆疊方法等同 Deque 於下表所示的方法:

<table class=“striped”><caption>堆疊與 Deque 方法<比較/caption><thead><tr><th scope=“col”> 堆疊方法</th><scope = “col”> 等效Deque方法< / th></tr></thead><tbody><tr><th scope=“row”/>#push(Object) push(e)<th td><>/td#addFirst(Object) addFirst(e)</tr><tr><th scope = “row”><>/th scope#pop() pop()<TD><>/TD#removeFirst() removeFirst()</TR><TR><TH scope = “row”/><>th#peek() peek()<td><>/td#getFirst() getFirst()</tr></tbody></table ><>

請注意,當排隊列或堆疊使用排隊時,此 #peek peek 方法同樣有效;無論哪種情況,元素都是從排隊列的起始處抽取。

此介面提供兩種方法來移除內部元素, #removeFirstOccurrence removeFirstOccurrence 且 #removeLastOccurrence removeLastOccurrence。

與介面 List 不同,此介面不支援元素的索引存取。

雖然 Deque 實作並非嚴格要求禁止插入虛無元素,但強烈建議這麼做。 任何允許空元素的實 Deque 作使用者,強烈建議 不要 利用插入空元素的功能。 這是因為 null 被各種方法用作特殊的回傳值,表示 deque 為空。

Deque 實作通常不會定義基於 equals 元素的 and hashCode 方法版本,而是繼承類別 Object的基於身份的版本。

新增於1.6版本。

的 java.util.DequeJava 檔。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

屬性

名稱 Description
First

取回但不移除這個雙排的第一元素。

Handle

取得底層 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
IsEmpty

若此處Collection不包含任何元素,則回傳true。

(繼承來源 ICollection)
JniIdentityHashCode

回傳包裹實例的 java.lang.System.identityHashCode() 值。

(繼承來源 IJavaPeerable)
JniManagedPeerState

管理貴族的狀況。

(繼承來源 IJavaPeerable)
JniObjectReferenceControlBlock

一個線性集合,支援元素兩端的插入與移除。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取與召喚支援。

(繼承來源 IJavaPeerable)
Last

取回但不移除這個雙排的最後一個元素。

PeerReference

回傳JniObjectReference包裹後的 Java 物件實例。

(繼承來源 IJavaPeerable)

方法

名稱 Description
Add(Object)

若可立即插入且不違反容量限制,則將指定元素插入由該排隊代表的佇列(換言之,排隊尾部),成功後返回true,若目前無空間則拋出 。IllegalStateException

AddAll(ICollection)

將指定集合中的所有元素加入此集合(可選操作)。

(繼承來源 ICollection)
AddFirst(Object)

若能立即插入且不違反容量限制,則將指定元素置於此排隊前端,若目前無空間則投擲 。IllegalStateException

AddLast(Object)

若可立即插入且不違反容量限制,則在排隊尾插入指定元素,若目前無空間則拋棄 。IllegalStateException

Clear()

移除此集合中的所有元素(可選操作)。

(繼承來源 ICollection)
Contains(Object)

若此排隊包含指定元素,則回傳 true 。

ContainsAll(ICollection)

若此集合包含指定集合中的所有元素,則回傳 true 。

(繼承來源 ICollection)
DescendingIterator()

以反向順序回傳此雙線中元素的迭代器。

Disposed()

當實例被處理後才被召喚。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果沒有未解決的參考資料,則 Dispose()呼叫;否則,則不做任何事。

(繼承來源 IJavaPeerable)
Element()

回收但不移除由此排隊代表的隊列首(換言之,該排隊的第一個元素)。

Equals(Object)

比較指定物件與此集合以求相等。

(繼承來源 ICollection)
Finalized()

當實例完成後才會被通知。

(繼承來源 IJavaPeerable)
ForEach(IConsumer)

對每個元素 Iterable 執行指定動作,直到所有元素都處理完畢或動作拋出異常。

(繼承來源 IIterable)
GetFirst()

取得這個集合的第一個元素。

(繼承來源 ISequencedCollection)
GetHashCode()

回傳此集合的雜湊碼值。

(繼承來源 ICollection)
GetLast()

拿到這個合集的最後一個元素。

(繼承來源 ISequencedCollection)
Iterator()

回傳對該雙線中元素的迭代器,按正確順序。

Offer(Object)

若能立即插入且不違反容量限制、成功後返回 true 且 false 目前無空間,則將指定元素插入由此佇列代表的佇列(也就是該排隊尾)。

OfferFirst(Object)

除非會違反容量限制,否則會將指定元件插入此排隊前端。

OfferLast(Object)

除非該元素違反容量限制,否則會將指定元素插入此排隊的末尾。

Peek()

取回但不移除由此排隊代表的隊列首(換言之,該排隊的第一個元素),若排隊為空,則返回 null 。

PeekFirst()

回收但不移除該排隊的第一個元素,若排隊為空則返回 null 。

PeekLast()

取回但不移除這個雙排的最後一個元素,若此排隊為空則返回 null 。

Poll()

擷取並移除由該排隊代表的隊列首(換言之,該排隊的第一個元素),若排隊為空,則返回 null 。

PollFirst()

取回並移除這個雙點的第一個元素,或如果這個雙點為空,則返回 null 。

PollLast()

取回並移除該雙線的最後一個元素,或若此雙線為空則返回 null 。

Pop()

從這組 deque 代表的堆疊中彈出一個元素。

Push(Object)

若能立即將元素推入由此佇列代表的堆疊(換言之,將該佇列的首端)推入,若目前無空格則拋出。IllegalStateException

Remove()

取回並移除由此排隊代表的隊列首(換言之,該排隊的第一個元素)。

Remove(Object)

移除該元素首次出現於此排隊。

RemoveAll(ICollection)

移除該集合中所有同時包含於指定集合中的元素(可選操作)。

(繼承來源 ICollection)
RemoveFirst()

取回並移除這個雙點的第一個元素。

RemoveFirstOccurrence(Object)

移除該元素首次出現於此排隊。

RemoveIf(IPredicate)

移除該集合中所有滿足該謂詞的元素(可選操作)。

(繼承來源 ICollection)
RemoveLast()

取回並移除這個 deque 的最後一個元素。

RemoveLastOccurrence(Object)

移除該元素最後出現的部分。

RetainAll(ICollection)

只保留該集合中包含於指定集合中的元素(可選操作)。

(繼承來源 ICollection)
Reversed()

回傳此集合的逆序視圖。

(繼承來源 ISequencedCollection)
SetJniIdentityHashCode(Int32)

將回傳的值設為 JniIdentityHashCode。

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

一個線性集合,支援元素兩端的插入與移除。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

將回傳的值設為 PeerReference。

(繼承來源 IJavaPeerable)
Size()

返回此排隊中的元素數量。

Spliterator()

在由此Spliterator描述的元素上建立 a Iterable 。

(繼承來源 IIterable)
ToArray()

回傳包含此集合中所有元素的陣列。

(繼承來源 ICollection)
ToArray(IIntFunction)

回傳包含此集合中所有元素的陣列,並使用所提供的 generator 函式來分配回傳的陣列。

(繼承來源 ICollection)
ToArray(Object[])

回傳包含此集合中所有元素的陣列;回傳陣列的執行時型別即為指定陣列的類型。

(繼承來源 ICollection)
UnregisterFromRuntime()

取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。

(繼承來源 IJavaPeerable)

明確介面實作

名稱 Description
IIterable.Spliterator()

在此集合中建立 元素 Spliterator 。

(繼承來源 ICollection)
ISequencedCollection.Reversed()

待補充

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

一個線性集合,支援元素兩端的插入與移除。

ToEnumerable(IIterable)

回傳 和 IEnumerable ,會對 Java IIterable進行迭代,允許 foreach 和 LINQ 與 Java 集合類型一起使用。 每個元素都會從其 Java 實例編組到對應的受管理型別。

ToEnumerable<T>(IIterable)

回傳 和 IEnumerable<T> ,該 在 Java IIterable上迭代,將每個元素 集結為 T。 這使得 foreach LINQ 可以搭配 Java 集合類型一起使用。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於