IDeque 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
一個線性集合,支援元素兩端的插入與移除。
[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版本。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
屬性
| 名稱 | Description |
|---|---|
| First |
取回但不移除這個雙排的第一元素。 |
| Handle |
取得底層 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
| IsEmpty |
若此處 |
| JniIdentityHashCode |
回傳包裹實例的 |
| JniManagedPeerState |
管理貴族的狀況。 (繼承來源 IJavaPeerable) |
| JniObjectReferenceControlBlock |
一個線性集合,支援元素兩端的插入與移除。 (繼承來源 IJavaPeerable) |
| JniPeerMembers |
成員存取與召喚支援。 (繼承來源 IJavaPeerable) |
| Last |
取回但不移除這個雙排的最後一個元素。 |
| PeerReference |
回傳JniObjectReference包裹後的 Java 物件實例。 (繼承來源 IJavaPeerable) |
方法
| 名稱 | Description |
|---|---|
| Add(Object) |
若可立即插入且不違反容量限制,則將指定元素插入由該排隊代表的佇列(換言之,排隊尾部),成功後返回 |
| AddAll(ICollection) |
將指定集合中的所有元素加入此集合(可選操作)。 (繼承來源 ICollection) |
| AddFirst(Object) |
若能立即插入且不違反容量限制,則將指定元素置於此排隊前端,若目前無空間則投擲 。 |
| AddLast(Object) |
若可立即插入且不違反容量限制,則在排隊尾插入指定元素,若目前無空間則拋棄 。 |
| Clear() |
移除此集合中的所有元素(可選操作)。 (繼承來源 ICollection) |
| Contains(Object) |
若此排隊包含指定元素,則回傳 |
| ContainsAll(ICollection) |
若此集合包含指定集合中的所有元素,則回傳 |
| DescendingIterator() |
以反向順序回傳此雙線中元素的迭代器。 |
| Disposed() |
當實例被處理後才被召喚。 (繼承來源 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果沒有未解決的參考資料,則 |
| Element() |
回收但不移除由此排隊代表的隊列首(換言之,該排隊的第一個元素)。 |
| Equals(Object) |
比較指定物件與此集合以求相等。 (繼承來源 ICollection) |
| Finalized() |
當實例完成後才會被通知。 (繼承來源 IJavaPeerable) |
| ForEach(IConsumer) |
對每個元素 |
| GetFirst() |
取得這個集合的第一個元素。 (繼承來源 ISequencedCollection) |
| GetHashCode() |
回傳此集合的雜湊碼值。 (繼承來源 ICollection) |
| GetLast() |
拿到這個合集的最後一個元素。 (繼承來源 ISequencedCollection) |
| Iterator() |
回傳對該雙線中元素的迭代器,按正確順序。 |
| Offer(Object) |
若能立即插入且不違反容量限制、成功後返回 |
| OfferFirst(Object) |
除非會違反容量限制,否則會將指定元件插入此排隊前端。 |
| OfferLast(Object) |
除非該元素違反容量限制,否則會將指定元素插入此排隊的末尾。 |
| Peek() |
取回但不移除由此排隊代表的隊列首(換言之,該排隊的第一個元素),若排隊為空,則返回 |
| PeekFirst() |
回收但不移除該排隊的第一個元素,若排隊為空則返回 |
| PeekLast() |
取回但不移除這個雙排的最後一個元素,若此排隊為空則返回 |
| Poll() |
擷取並移除由該排隊代表的隊列首(換言之,該排隊的第一個元素),若排隊為空,則返回 |
| PollFirst() |
取回並移除這個雙點的第一個元素,或如果這個雙點為空,則返回 |
| PollLast() |
取回並移除該雙線的最後一個元素,或若此雙線為空則返回 |
| Pop() |
從這組 deque 代表的堆疊中彈出一個元素。 |
| Push(Object) |
若能立即將元素推入由此佇列代表的堆疊(換言之,將該佇列的首端)推入,若目前無空格則拋出。 |
| Remove() |
取回並移除由此排隊代表的隊列首(換言之,該排隊的第一個元素)。 |
| Remove(Object) |
移除該元素首次出現於此排隊。 |
| RemoveAll(ICollection) |
移除該集合中所有同時包含於指定集合中的元素(可選操作)。 (繼承來源 ICollection) |
| RemoveFirst() |
取回並移除這個雙點的第一個元素。 |
| RemoveFirstOccurrence(Object) |
移除該元素首次出現於此排隊。 |
| RemoveIf(IPredicate) |
移除該集合中所有滿足該謂詞的元素(可選操作)。 (繼承來源 ICollection) |
| RemoveLast() |
取回並移除這個 deque 的最後一個元素。 |
| RemoveLastOccurrence(Object) |
移除該元素最後出現的部分。 |
| RetainAll(ICollection) |
只保留該集合中包含於指定集合中的元素(可選操作)。 (繼承來源 ICollection) |
| Reversed() |
回傳此集合的逆序視圖。 (繼承來源 ISequencedCollection) |
| SetJniIdentityHashCode(Int32) |
將回傳的值設為 |
| SetJniManagedPeerState(JniManagedPeerStates) |
一個線性集合,支援元素兩端的插入與移除。 (繼承來源 IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
將回傳的值設為 |
| Size() |
返回此排隊中的元素數量。 |
| Spliterator() |
在由此 |
| ToArray() |
回傳包含此集合中所有元素的陣列。 (繼承來源 ICollection) |
| ToArray(IIntFunction) |
回傳包含此集合中所有元素的陣列,並使用所提供的 |
| ToArray(Object[]) |
回傳包含此集合中所有元素的陣列;回傳陣列的執行時型別即為指定陣列的類型。 (繼承來源 ICollection) |
| UnregisterFromRuntime() |
取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。 (繼承來源 IJavaPeerable) |
明確介面實作
| 名稱 | Description |
|---|---|
| IIterable.Spliterator() |
在此集合中建立 元素 |
| ISequencedCollection.Reversed() |
待補充 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
一個線性集合,支援元素兩端的插入與移除。 |
| ToEnumerable(IIterable) |
回傳 和 IEnumerable ,會對 Java IIterable進行迭代,允許 |
| ToEnumerable<T>(IIterable) |
回傳 和 IEnumerable<T> ,該 在 Java IIterable上迭代,將每個元素 集結為 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |