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
[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 实现通常不定义基于元素的版本 equalshashCode 方法,而是从类 Object继承基于标识的版本。

已在 1.6 中添加。

Java文档java.util.Deque

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

属性

名称 说明
First

检索但不删除此 deque 的第一个元素。

Handle

获取基础 Android 对象的 JNI 值。

(继承自 IJavaObject)
IsEmpty

如果不包含 Collection 任何元素,则返回。

(继承自 ICollection)
JniIdentityHashCode

返回包装实例的值 java.lang.System.identityHashCode()

(继承自 IJavaPeerable)
JniManagedPeerState

托管对等方的状态。

(继承自 IJavaPeerable)
JniPeerMembers

成员访问和调用支持。

(继承自 IJavaPeerable)
Last

检索此 deque 的最后一个元素,但不删除。

PeerReference

返回JniObjectReference包装的Java对象实例。

(继承自 IJavaPeerable)

方法

名称 说明
Add(Object)

如果可以立即执行此操作而不违反容量限制,则将此 deque(换句话说,在此 deque 的结尾)所表示的队列中插入指定的元素,并在成功后返回 true ,如果当前没有可用空间,则 IllegalStateException 引发该元素。

AddAll(ICollection)

将指定集合中的所有元素添加到此集合(可选操作)。

(继承自 ICollection)
AddFirst(Object)

如果可以立即执行此操作而不违反容量限制,则在此 deque 的前面插入指定的元素,如果当前没有可用空间,则会 IllegalStateException 引发该元素。

AddLast(Object)

如果可以立即执行此操作而不违反容量限制,则在此 deque 的末尾插入指定的元素,如果当前没有可用空间,则会 IllegalStateException 引发该元素。

Clear()

从此集合中删除所有元素(可选操作)。

(继承自 ICollection)
Contains(Object)

如果 true 此 deque 包含指定的元素,则返回。

ContainsAll(ICollection)

如果 true 此集合包含指定集合中的所有元素,则返回。

(继承自 ICollection)
DescendingIterator()

以反向顺序返回此 deque 中元素的迭代器。

Disposed()

在释放实例时调用。

(继承自 IJavaPeerable)
DisposeUnlessReferenced()

如果没有对此实例的未完成引用,则调用 Dispose();否则不执行任何操作。

(继承自 IJavaPeerable)
Element()

检索此 deque 所表示的队列的头(换句话说,此 deque 的第一个元素)。

Equals(Object)

将指定的对象与此集合进行比较,以便相等。

(继承自 ICollection)
Finalized()

在实例完成时调用。

(继承自 IJavaPeerable)
ForEach(IConsumer)

对每个元素执行给定操作,直到处理完所有元素 Iterable 或该操作引发异常。

(继承自 IIterable)
GetFirst()

获取此集合的第一个元素。

(继承自 ISequencedCollection)
GetHashCode()

返回此集合的哈希代码值。

(继承自 ICollection)
GetLast()

获取此集合的最后一个元素。

(继承自 ISequencedCollection)
Iterator()

按正确的顺序返回此 deque 中的元素的迭代器。

Offer(Object)

如果可以立即执行此操作而不违反容量限制,则将此 deque 表示的指定元素插入到由此 deque 的末尾表示的队列中,如果true当前没有可用空间,false则返回。

OfferFirst(Object)

在此 deque 的前面插入指定的元素,除非它违反容量限制。

OfferLast(Object)

在此 deque 末尾插入指定的元素,除非它违反容量限制。

Peek()

检索(但不删除)此 deque 表示的队列的头(换句话说,此 deque 的第一个元素),或返回 null 此 deque 是否为空。

PeekFirst()

检索但不删除此 deque 的第一个元素,或返回 null 此 deque 为空。

PeekLast()

检索但不删除此 deque 的最后一个元素,或返回 null 此 deque 为空。

Poll()

检索并删除此 deque 所表示的队列的头(换句话说,此 deque 的第一个元素),或者返回 null 此 deque 为空。

PollFirst()

检索并删除此 deque 的第一个元素,或返回 null 此 deque 是否为空。

PollLast()

检索并删除此 deque 的最后一个元素,或返回 null 此 deque 是否为空。

Pop()

从此 deque 表示的堆栈中弹出元素。

Push(Object)

如果可以立即执行此操作而不违反容量限制,则会将元素推送到由此 deque(换句话说,位于此 deque 的头)所表示的堆栈上,如果当前没有可用空间,则会 IllegalStateException 引发该元素。

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)

设置由 JniIdentityHashCode. 返回的值。

(继承自 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

一个线性集合,支持在两端插入和删除元素。

(继承自 IJavaPeerable)
SetPeerReference(JniObjectReference)

设置由 PeerReference. 返回的值。

(继承自 IJavaPeerable)
Size()

返回此 deque 中的元素数。

Spliterator()

Spliterator创建由此Iterable描述的元素。

(继承自 IIterable)
ToArray()

返回一个数组,其中包含此集合中的所有元素。

(继承自 ICollection)
ToArray(IIntFunction)

返回包含此集合中的所有元素的数组,该数组使用提供的 generator 函数分配返回的数组。

(继承自 ICollection)
ToArray(Object[])

返回一个数组,其中包含此集合中的所有元素;返回的数组的运行时类型是指定数组的运行时类型。

(继承自 ICollection)
UnregisterFromRuntime()

取消注册此实例,使运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。

(继承自 IJavaPeerable)

显式接口实现

名称 说明
IIterable.Spliterator()

在此集合中的元素上创建一个 Spliterator

(继承自 ICollection)
ISequencedCollection.Reversed()

要添加

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

一个线性集合,支持在两端插入和删除元素。

ToEnumerable(IIterable)

一个线性集合,支持在两端插入和删除元素。

ToEnumerable<T>(IIterable)

一个线性集合,支持在两端插入和删除元素。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于