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
[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
[<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 实现对它们可能包含的元素数没有固定限制,但此接口支持容量限制的取消排队,以及没有固定大小限制的元素。
此接口定义用于访问 deque 两端的元素的方法。 提供了插入、删除和检查元素的方法。 其中每个方法都以两种形式存在:一种在操作失败时引发异常,另一种方法返回一个特殊值( null 或者 false,具体取决于操作)。 插入操作的后一种形式专门用于容量受限 Deque 实现;在大多数实现中,插入操作无法失败。
下表汇总了上述十二种方法:
<table class=“striped”>caption Summary of Deque methods</caption><thead><tr><td rowspan=“2”></td<>th scope=“col” colspan=“2”> First Element (Head)</th><scope=“col” col“ colspan=”2“> Last Element (Tail)</th<>/tr<>tr<>th scope=”col“ style=”font-weight:normal; font-style:italic“>Throws exception</th><th scope=”col“ style=”font-weight:><normal;font-style:italic“>Special value/th><th scope=”col“ style=”font-weight:normal; font-style:italic“>Throws exception</th><scope=”col“ style=”font-weight:normal; font-style:italic“>Special value<</th<>/tr></thead><tbody><tr><th scope=”row“>Insert</th<>td/td<#addFirst(Object) addFirst(e)> td><td>#offerFirst(Object) offerFirst(e)<><>#addLast(Object) addLast(e)</td><td>#offerLast(Object) offerLast(e)</td></tr><tr><th scope=“row”>Remove</th td/td><td>><#removeFirst() removeFirst()#pollFirst() pollFirst()</td><td><#removeLast() removeLast()/td><td/td>><<#pollLast() pollLast()/tr><tr><th scope=“row”>Examine</th>><<td>#getFirst() getFirst()</><td td td/>td td>#peekFirst() peekFirst()<><>#getLast() getLast()<<td>#peekLast() peekLast()</td></tr></tbody></table>
此接口扩展 Queue 接口。 当 deque 用作队列时,FIFO (首次传入First-Out) 行为结果。 元素在 deque 的末尾添加,并从开头删除。 从 Queue 接口继承的方法与下表所示的方法完全等效 Deque :
<table class=“striped”>caption Comparison of Queue and Deque methods</caption><thead><tr><th scope=“col”>Queue Method/th><scope=“col”> Equivalent Deque Method<</th/tr></thead><tbody<>tr><th scope=“row”#add(Object) add(e)></th><<> td<<>#addLast(Object) addLast(e)>/tr><th><scope=“row”<>#offer(Object) offer(e)/th><><td>#offerLast(Object) offerLast(e)</td></tr><tr><th scope=“row”>#remove() remove()</th><td/td>><#removeFirst() removeFirst()</tr><tr><th scope=“row”><#poll() poll()/th><td/td>#pollFirst() pollFirst()<<>/tr><tr><th scope=“row”/th><td><#getFirst() getFirst()/><tr<>tr<>th scope=“row”#element() element()>>#peek() peek()<</th><td>#peekFirst() peekFirst()</td></tr></tbody></table>
Deques 还可以用作 LIFO (最后First-Out) 堆栈。 此接口应优先于旧 Stack 类。 当 deque 用作堆栈时,元素将从 deque 的开头推送和弹出。 堆栈方法等效于 Deque 下表所示的方法:
<table class=“striped”>caption Comparison of Stack and Deque methods</caption><thead><tr><th scope=“col”> Stack Method/th><scope=“col”> Equivalent Deque Method<</th/tr></thead><tbody><tr><th scope=“row”<#push(Object) push(e)>/th><<> td><#addFirst(Object) addFirst(e)/<>tr<>tr<>th scope=“row”<>#pop() pop()/th><td>#removeFirst() removeFirst()</td></tr><tr><th scope=“row”><#peek() peek()/th><td/td>#getFirst() getFirst()<></tr></tbody></table ><>
请注意, #peek peek 当 deque 用作队列或堆栈时,该方法同样有效;在任一情况下,将从 deque 的开头绘制元素。
此接口提供两种方法来删除内部元素, #removeFirstOccurrence removeFirstOccurrence 以及 #removeLastOccurrence removeLastOccurrence.
List与接口不同,此接口不支持对元素进行索引访问。
虽然 Deque 严格要求实现禁止插入 null 元素,但强烈建议这样做。
Deque强烈建议任何允许 null 元素的实现的用户不要利用插入 null 的功能。 这是因为 null 被各种方法用作特殊返回值,以指示 deque 为空。
Deque 实现通常不定义基于元素的版本 equals 和 hashCode 方法,而是从类 Object继承基于标识的版本。
已在 1.6 中添加。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
属性
| 名称 | 说明 |
|---|---|
| First |
检索但不删除此 deque 的第一个元素。 |
| Handle |
获取基础 Android 对象的 JNI 值。 (继承自 IJavaObject) |
| IsEmpty |
如果不包含 |
| JniIdentityHashCode |
返回包装实例的值 |
| JniManagedPeerState |
托管对等方的状态。 (继承自 IJavaPeerable) |
| JniPeerMembers |
成员访问和调用支持。 (继承自 IJavaPeerable) |
| Last |
检索此 deque 的最后一个元素,但不删除。 |
| PeerReference |
返回JniObjectReference包装的Java对象实例。 (继承自 IJavaPeerable) |
方法
| 名称 | 说明 |
|---|---|
| Add(Object) |
如果可以立即执行此操作而不违反容量限制,则将此 deque(换句话说,在此 deque 的结尾)所表示的队列中插入指定的元素,并在成功后返回 |
| AddAll(ICollection) |
将指定集合中的所有元素添加到此集合(可选操作)。 (继承自 ICollection) |
| AddFirst(Object) |
如果可以立即执行此操作而不违反容量限制,则在此 deque 的前面插入指定的元素,如果当前没有可用空间,则会 |
| AddLast(Object) |
如果可以立即执行此操作而不违反容量限制,则在此 deque 的末尾插入指定的元素,如果当前没有可用空间,则会 |
| Clear() |
从此集合中删除所有元素(可选操作)。 (继承自 ICollection) |
| Contains(Object) |
如果 |
| ContainsAll(ICollection) |
如果 |
| DescendingIterator() |
以反向顺序返回此 deque 中元素的迭代器。 |
| Disposed() |
在释放实例时调用。 (继承自 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果没有对此实例的未完成引用,则调用 |
| Element() |
检索此 deque 所表示的队列的头(换句话说,此 deque 的第一个元素)。 |
| Equals(Object) |
将指定的对象与此集合进行比较,以便相等。 (继承自 ICollection) |
| Finalized() |
在实例完成时调用。 (继承自 IJavaPeerable) |
| ForEach(IConsumer) |
对每个元素执行给定操作,直到处理完所有元素 |
| GetFirst() |
获取此集合的第一个元素。 (继承自 ISequencedCollection) |
| GetHashCode() |
返回此集合的哈希代码值。 (继承自 ICollection) |
| GetLast() |
获取此集合的最后一个元素。 (继承自 ISequencedCollection) |
| Iterator() |
按正确的顺序返回此 deque 中的元素的迭代器。 |
| Offer(Object) |
如果可以立即执行此操作而不违反容量限制,则将此 deque 表示的指定元素插入到由此 deque 的末尾表示的队列中,如果 |
| OfferFirst(Object) |
在此 deque 的前面插入指定的元素,除非它违反容量限制。 |
| OfferLast(Object) |
在此 deque 末尾插入指定的元素,除非它违反容量限制。 |
| Peek() |
检索(但不删除)此 deque 表示的队列的头(换句话说,此 deque 的第一个元素),或返回 |
| PeekFirst() |
检索但不删除此 deque 的第一个元素,或返回 |
| PeekLast() |
检索但不删除此 deque 的最后一个元素,或返回 |
| Poll() |
检索并删除此 deque 所表示的队列的头(换句话说,此 deque 的第一个元素),或者返回 |
| PollFirst() |
检索并删除此 deque 的第一个元素,或返回 |
| PollLast() |
检索并删除此 deque 的最后一个元素,或返回 |
| Pop() |
从此 deque 表示的堆栈中弹出元素。 |
| Push(Object) |
如果可以立即执行此操作而不违反容量限制,则会将元素推送到由此 deque(换句话说,位于此 deque 的头)所表示的堆栈上,如果当前没有可用空间,则会 |
| Remove() |
检索并删除此 deque 所表示的队列的头(换句话说,即此 deque 的第一个元素)。 |
| Remove(Object) |
从此 deque 中删除指定元素的第一个匹配项。 |
| RemoveAll(ICollection) |
删除指定集合中包含的所有此集合元素(可选操作)。 (继承自 ICollection) |
| RemoveFirst() |
检索并删除此 deque 的第一个元素。 |
| RemoveFirstOccurrence(Object) |
从此 deque 中删除指定元素的第一个匹配项。 |
| RemoveIf(IPredicate) |
删除满足给定谓词的此集合的所有元素。 (继承自 ICollection) |
| RemoveLast() |
检索并删除此 deque 的最后一个元素。 |
| RemoveLastOccurrence(Object) |
从此 deque 中删除指定元素的最后一个匹配项。 |
| RetainAll(ICollection) |
仅保留指定集合中包含的此集合中的元素(可选操作)。 (继承自 ICollection) |
| Reversed() |
返回此集合的反向排序视图。 (继承自 ISequencedCollection) |
| SetJniIdentityHashCode(Int32) |
设置由 |
| SetJniManagedPeerState(JniManagedPeerStates) |
一个线性集合,支持在两端插入和删除元素。 (继承自 IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
设置由 |
| Size() |
返回此 deque 中的元素数。 |
| Spliterator() |
|
| ToArray() |
返回一个数组,其中包含此集合中的所有元素。 (继承自 ICollection) |
| ToArray(IIntFunction) |
返回包含此集合中的所有元素的数组,该数组使用提供的 |
| ToArray(Object[]) |
返回一个数组,其中包含此集合中的所有元素;返回的数组的运行时类型是指定数组的运行时类型。 (继承自 ICollection) |
| UnregisterFromRuntime() |
取消注册此实例,使运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。 (继承自 IJavaPeerable) |
显式接口实现
| 名称 | 说明 |
|---|---|
| IIterable.Spliterator() |
在此集合中的元素上创建一个 |
| ISequencedCollection.Reversed() |
要添加 |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
一个线性集合,支持在两端插入和删除元素。 |
| ToEnumerable(IIterable) |
一个线性集合,支持在两端插入和删除元素。 |
| ToEnumerable<T>(IIterable) |
一个线性集合,支持在两端插入和删除元素。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |