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" })>]
type IDeque = interface
interface IQueue
interface ICollection
interface IIterable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 派生
- 属性
- 实现
注解
一个线性集合,支持在两端插入和删除元素。 deque 名称是“双端队列”的缩写,通常发音为“deck”。 大多数 Deque
实现对它们可能包含的元素数没有固定限制,但此接口支持容量受限的 deque 以及没有固定大小限制的元素。
此接口定义了访问 deque 两端元素的方法。 提供了用于插入、删除和检查 元素的方法。 其中每种方法都以两种形式存在:一种方法在操作失败时引发异常,另一种方法返回 (null
或 false
的特殊值,具体取决于操作) 。 插入操作的后一种形式专为与容量受限 Deque
的实现一起使用而设计;在大多数实现中,插入操作不会失败。
下表汇总了上述十二种方法:
<table class=“striped”>描述文字 Deque methods</描述文字><thead<>tr<>td rowspan=“2”></td><th scope=“col” col“ colspan=”2“> First Element (Head) </th><th scope=”col“ colspan=”2“> Last Element (Tail) </th<>/tr<>><th scope=”col“ style=”font-weight:normal; font-style:italic“>引发异常><</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><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>#offerFirst(Object) offerFirst(e)
<><>#addLast(Object) addLast(e)
</Td><td>#offerLast(Object) offerLast(e)
</td></tr><<>th scope=“row”>Remove</th<>td<#removeFirst() removeFirst()
>/td<>td<#pollFirst() pollFirst()
>/td><td<>#removeLast() removeLast()
/td><td/td td#pollLast() pollLast()
<>/td></tr<><>th scope=“row”>Examine</th<>td<#getFirst() getFirst()
>/td<>td><#peekFirst() peekFirst()
/td<>td#getLast() getLast()
></td><Td>#peekLast() peekLast()
</td></tr></tbody></table>
此接口扩展接口 Queue
。 将 deque 用作队列时,FIFO (先入先出) 行为结果。 元素在 deque 的末尾添加,并从开头删除。 从 Queue
接口继承的方法与下表中所示的方法完全等效 Deque
:
<table class=“striped”>描述文字Comparison of Queue and Deque methods</描述文字<>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”><#offer(Object) offer(e)
/th><td><#offerLast(Object) offerLast(e)
/td></tr><<>th scope=“row”#remove() remove()
></th<>td<>#removeFirst() removeFirst()
/td></tr>><<th scope=“row”#poll() poll()
></th<>td/td>#pollFirst() pollFirst()
<<>/tr>><<th scope=“row”#element() element()
></th><td/tr thd/td>><#getFirst() getFirst()
</tr>><<<th scope=“row”>#peek() peek()
</th><td><#peekFirst() peekFirst()
/td></tr></tbody></table>
Deques 还可以用作 LIFO (先入先出) 堆栈。 应优先使用此接口,而不是旧类 Stack
。 当 deque 用作堆栈时,将从 deque 的开头推送和弹出元素。 堆栈方法等效于 Deque
下表中所示的方法:
<table class=“striped”>描述文字Comparison of Stack and Deque methods</描述文字><thead<>tr><th scope=“col”> Stack Method</th<>th scope=“col”> 等效Deque
方法</th<>/tr<>/thead<>tbody<>tr<>th scope=“row”><#push(Object) push(e)
/th<>td#addFirst(Object) addFirst(e)
></td<>/tr<>><><th scope=“row”>#pop() pop()
</th><td><#removeFirst() removeFirst()
/td></tr><><th scope=“row”><#peek() peek()
/th><td#getFirst() getFirst()
<>/td<>/tr<>/tbody></table>
请注意, #peek peek
当 deque 用作队列或堆栈时,方法同样有效;无论哪种情况,元素都是从 deque 的开头绘制的。
此接口提供两种用于删除内部元素的方法: #removeFirstOccurrence removeFirstOccurrence
和 #removeLastOccurrence removeLastOccurrence
。
List
与 接口不同,此接口不支持对元素进行索引访问。
虽然 Deque
严格不需要实现来禁止插入 null 元素,但强烈建议它们这样做。 强烈建议任何 Deque
允许 null 元素的实现的用户 不要 利用插入 null 的功能。 之所以如此,是因为 null
被各种方法用作特殊的返回值,以指示 deque 为空。
Deque
实现通常不定义 和 hashCode
方法的equals
基于元素的版本,而是从 类 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) |
对 的每个元素执行给定操作, |
GetHashCode() |
返回此集合的哈希代码值。 (继承自 ICollection) |
Iterator() |
按适当顺序返回此 deque 中元素的迭代器。 |
Offer(Object) |
将指定的元素插入到此 deque (表示的队列中,换言之,如果可以立即执行此操作而不违反容量限制,则在此 deque) 的末尾,如果成功 |
OfferFirst(Object) |
在此 deque 的前面插入指定的元素,除非它违反容量限制。 |
OfferLast(Object) |
在此 deque 的末尾插入指定的元素,除非它违反容量限制。 |
Peek() |
检索(但不删除)此 deque 表示的队列的头 (换而言之,此 deque 的第一个元素) ;如果此 deque 为空,则返回 |
PeekFirst() |
检索但不删除此 deque 的第一个元素,如果 deque 为空,则返回 |
PeekLast() |
检索(但不删除)此 deque 的最后一个元素,如果 deque 为空,则返回 |
Poll() |
检索并删除此 deque (表示的队列的头,换言之,此 deque 的第一个元素) ,如果此 deque 为空,则返回 |
PollFirst() |
检索并删除此 deque 的第一个元素,如果 deque 为空,则返回 |
PollLast() |
检索并删除此 deque 的最后一个元素,如果此 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) |
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() |
|
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
一个线性集合,支持在两端插入和删除元素。 |
GetJniTypeName(IJavaPeerable) |
一个线性集合,支持在两端插入和删除元素。 |
ToEnumerable(IIterable) |
一个线性集合,支持在两端插入和删除元素。 |
ToEnumerable<T>(IIterable) |
一个线性集合,支持在两端插入和删除元素。 |