Share via


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" })>]
type IDeque = interface
    interface IQueue
    interface ICollection
    interface IIterable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
派生
属性
实现

注解

一个线性集合,支持在两端插入和删除元素。 deque 名称是“双端队列”的缩写,通常发音为“deck”。 大多数 Deque 实现对它们可能包含的元素数没有固定限制,但此接口支持容量受限的 deque 以及没有固定大小限制的元素。

此接口定义了访问 deque 两端元素的方法。 提供了用于插入、删除和检查 元素的方法。 其中每种方法都以两种形式存在:一种方法在操作失败时引发异常,另一种方法返回 (nullfalse的特殊值,具体取决于操作) 。 插入操作的后一种形式专为与容量受限 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 中添加。

java.util.DequeJava 文档。

此页面的部分内容是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的术语使用。

属性

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)
GetHashCode()

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

(继承自 ICollection)
Iterator()

按适当顺序返回此 deque 中元素的迭代器。

Offer(Object)

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

OfferFirst(Object)

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

OfferLast(Object)

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

Peek()

检索(但不删除)此 deque 表示的队列的头 (换而言之,此 deque 的第一个元素) ;如果此 deque 为空,则返回 null

PeekFirst()

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

PeekLast()

检索(但不删除)此 deque 的最后一个元素,如果 deque 为空,则返回 null

Poll()

检索并删除此 deque (表示的队列的头,换言之,此 deque 的第一个元素) ,如果此 deque 为空,则返回 null

PollFirst()

检索并删除此 deque 的第一个元素,如果 deque 为空,则返回 null

PollLast()

检索并删除此 deque 的最后一个元素,如果此 deque 为空,则返回 null

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)
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)

扩展方法

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

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

GetJniTypeName(IJavaPeerable)

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

ToEnumerable(IIterable)

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

ToEnumerable<T>(IIterable)

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

适用于