Most visited

Recently visited

Added in API level 9

ArrayDeque

public class ArrayDeque
extends AbstractCollection<E> implements Deque<E>, Cloneable, Serializable

java.lang.Object
   ↳ java.util.AbstractCollection<E>
     ↳ java.util.ArrayDeque<E>


Deque接口的可调整大小的实现。 Array deques没有容量限制; 它们根据需要增长以支持使用。 它们不是线程安全的; 在没有外部同步的情况下,它们不支持多线程的并发访问。 禁止使用空元素。 当用作堆栈时,该类可能会比Stack更快,并且在用作队列时速度会比LinkedList更快。

大多数ArrayDeque操作以摊销后的恒定时间运行。 例外包括removeremoveFirstOccurrenceremoveLastOccurrencecontainsiterator.remove() ,和批量操作,所有这些都在运行线性时间。

这个类的iterator方法返回的迭代器是快速失败的 :如果在创建迭代器后随时修改双端队列,除了通过迭代器自己的方法remove ,迭代器通常会抛出ConcurrentModificationException 因此,面对并发修改,迭代器快速而干净地失败,而不是在将来某个未确定的时间冒着任意的,非确定性的行为风险。

请注意,迭代器的故障快速行为无法得到保证,因为一般来说,在存在非同步并发修改的情况下不可能做出任何硬性保证。 失败快速迭代器在尽力而为的基础上抛出ConcurrentModificationException 因此,编写一个依赖于此异常的程序是正确的: 迭代器的快速失败行为应仅用于检测错误。

该类及其迭代器实现 CollectionIterator接口的所有 可选方法。

Summary

Public constructors

ArrayDeque()

使用足以容纳16个元素的初始容量构造一个空数组deque。

ArrayDeque(int numElements)

构造一个空数组deque,其初始容量足以容纳指定数量的元素。

ArrayDeque(Collection<? extends E> c)

按照集合迭代器返回的顺序构造一个包含指定集合元素的deque。

Public methods

boolean add(E e)

在此双端队列的末尾插入指定的元素。

void addFirst(E e)

在此双端队列的前面插入指定的元素。

void addLast(E e)

在此双端队列的末尾插入指定的元素。

void clear()

删除此双端队列中的所有元素。

ArrayDeque<E> clone()

返回此双端队列的副本。

boolean contains(Object o)

如果此双端队列包含指定的元素,则返回 true

Iterator<E> descendingIterator()

以相反顺序返回此双端队列中元素的迭代器。

E element()

检索但不移除由此双端队列表示的队列头部。

E getFirst()

检索但不删除此双端队列的第一个元素。

E getLast()

检索但不删除此双端队列的最后一个元素。

boolean isEmpty()

如果此双端队列不包含元素,则返回 true

Iterator<E> iterator()

返回此双端队列中元素的迭代器。

boolean offer(E e)

在此双端队列的末尾插入指定的元素。

boolean offerFirst(E e)

在此双端队列的前面插入指定的元素。

boolean offerLast(E e)

在此双端队列的末尾插入指定的元素。

E peek()

检索但不移除由此双端队列表示的队列头,或者如果此双端队列为空,则返回 null

E peekFirst()

检索但不移除此双端队列的第一个元素,或者如果此双端队列为空,则返回 null

E peekLast()

检索但不移除此双端队列的最后一个元素,或者如果此双端队列为空,则返回 null

E poll()

检索并移除由此双端队列表示的队列头(换句话说,此双端队列的第一个元素);如果此双端队列为空,则返回 null

E pollFirst()

检索并移除此双端队列的第一个元素,或者如果此双端队列为空,则返回 null

E pollLast()

检索并移除此双端队列的最后一个元素,或者如果此双端队列为空,则返回 null

E pop()

从由此双端队列表示的堆栈中弹出一个元素。

void push(E e)

将元素推入由此双端队列表示的堆栈。

E remove()

检索并删除由此双端队列表示的队列的头部。

boolean remove(Object o)

从此双端队列中移除指定元素的单个实例。

E removeFirst()

检索并删除此双端队列的第一个元素。

boolean removeFirstOccurrence(Object o)

删除此双端队列中首次出现的指定元素(当从头到尾遍历双端队列时)。

E removeLast()

检索并删除此双端队列的最后一个元素。

boolean removeLastOccurrence(Object o)

删除此双端队列中指定元素的最后一次出现(当从头到尾遍历双端队列时)。

int size()

返回此双端队列中的元素数量。

Spliterator<E> spliterator()

在此双端队列中的元素上创建 late-binding快速失败 Spliterator

Object[] toArray()

以适当的顺序返回一个包含此双端队列中所有元素的数组(从第一个元素到最后一个元素)。

<T> T[] toArray(T[] a)

以适当的顺序返回一个包含此双端队列中所有元素的数组(从第一个元素到最后一个元素); 返回数组的运行时类型是指定数组的运行时类型。

Inherited methods

From class java.util.AbstractCollection
From class java.lang.Object
From interface java.util.Collection
From interface java.util.Deque
From interface java.lang.Iterable
From interface java.util.Queue

Public constructors

ArrayDeque

Added in API level 9
ArrayDeque ()

使用足以容纳16个元素的初始容量构造一个空数组deque。

ArrayDeque

Added in API level 9
ArrayDeque (int numElements)

构造一个空数组deque,其初始容量足以容纳指定数量的元素。

Parameters
numElements int: lower bound on initial capacity of the deque

ArrayDeque

Added in API level 9
ArrayDeque (Collection<? extends E> c)

按照集合迭代器返回的顺序构造一个包含指定集合元素的deque。 (集合迭代器返回的第一个元素成为第一个元素,或者deque的前面 。)

Parameters
c Collection: the collection whose elements are to be placed into the deque
Throws
NullPointerException if the specified collection is null

Public methods

add

Added in API level 9
boolean add (E e)

在此双端队列的末尾插入指定的元素。

该方法相当于 addLast(E)

Parameters
e E: the element to add
Returns
boolean true (as specified by add(E))
Throws
NullPointerException if the specified element is null

addFirst

Added in API level 9
void addFirst (E e)

在此双端队列的前面插入指定的元素。

Parameters
e E: the element to add
Throws
NullPointerException if the specified element is null

addLast

Added in API level 9
void addLast (E e)

在此双端队列的末尾插入指定的元素。

这种方法相当于 add(E)

Parameters
e E: the element to add
Throws
NullPointerException if the specified element is null

clear

Added in API level 9
void clear ()

删除此双端队列中的所有元素。 此通话返回后,双流器将为空。

clone

Added in API level 9
ArrayDeque<E> clone ()

返回此双端队列的副本。

Returns
ArrayDeque<E> a copy of this deque

contains

Added in API level 9
boolean contains (Object o)

如果此双端队列包含指定的元素,则返回true 更正式地,返回true当且仅当该双端包含至少一个元素e ,使得o.equals(e)

Parameters
o Object: object to be checked for containment in this deque
Returns
boolean true if this deque contains the specified element

descendingIterator

Added in API level 9
Iterator<E> descendingIterator ()

以相反顺序返回此双端队列中元素的迭代器。 元素将从上一个(尾)到第一个(头)的顺序返回。

Returns
Iterator<E> an iterator over the elements in this deque in reverse sequence

element

Added in API level 9
E element ()

检索但不移除由此双端队列表示的队列头部。 此方法与peek仅在于,如果此双端队列为空,则会引发异常。

该方法相当于 getFirst()

Returns
E the head of the queue represented by this deque
Throws
NoSuchElementException

getFirst

Added in API level 9
E getFirst ()

检索但不删除此双端队列的第一个元素。 该方法与peekFirst仅在于,如果此双端队列为空,则会引发异常。

Returns
E the head of this deque
Throws
NoSuchElementException

getLast

Added in API level 9
E getLast ()

检索但不删除此双端队列的最后一个元素。 此方法与peekLast仅在于,如果此双端队列为空,则会引发异常。

Returns
E the tail of this deque
Throws
NoSuchElementException

isEmpty

Added in API level 9
boolean isEmpty ()

如果此双端队列不包含元素,则返回 true

Returns
boolean true if this deque contains no elements

iterator

Added in API level 9
Iterator<E> iterator ()

返回此双端队列中元素的迭代器。 元素将从第一个(头部)到最后一个(尾部)排序。 这与元素出队的顺序相同(通过连续呼叫remove()或弹出(通过连续呼叫pop() )。

Returns
Iterator<E> an iterator over the elements in this deque

offer

Added in API level 9
boolean offer (E e)

在此双端队列的末尾插入指定的元素。

该方法相当于 offerLast(E)

Parameters
e E: the element to add
Returns
boolean true (as specified by offer(E))
Throws
NullPointerException if the specified element is null

offerFirst

Added in API level 9
boolean offerFirst (E e)

在此双端队列的前面插入指定的元素。

Parameters
e E: the element to add
Returns
boolean true (as specified by offerFirst(E))
Throws
NullPointerException if the specified element is null

offerLast

Added in API level 9
boolean offerLast (E e)

在此双端队列的末尾插入指定的元素。

Parameters
e E: the element to add
Returns
boolean true (as specified by offerLast(E))
Throws
NullPointerException if the specified element is null

peek

Added in API level 9
E peek ()

检索但不移除由此双端队列表示的队列头,或者如果此双端队列为空,则返回 null

该方法相当于 peekFirst()

Returns
E the head of the queue represented by this deque, or null if this deque is empty

peekFirst

Added in API level 9
E peekFirst ()

检索但不移除此双端队列的第一个元素,或者如果此双端队列为空,则返回 null

Returns
E the head of this deque, or null if this deque is empty

peekLast

Added in API level 9
E peekLast ()

检索但不删除此双端队列的最后一个元素,或者如果此双端队列为空,则返回 null

Returns
E the tail of this deque, or null if this deque is empty

poll

Added in API level 9
E poll ()

检索并移除由此双端队列表示的队列头(换句话说,此双端队列的第一个元素);如果此双端队列为空,则返回 null

该方法相当于 pollFirst()

Returns
E the head of the queue represented by this deque, or null if this deque is empty

pollFirst

Added in API level 9
E pollFirst ()

检索并删除此双端队列的第一个元素,或者如果此双端队列为空,则返回 null

Returns
E the head of this deque, or null if this deque is empty

pollLast

Added in API level 9
E pollLast ()

检索并移除此双端队列的最后一个元素,或者如果此双端队列为空,则返回 null

Returns
E the tail of this deque, or null if this deque is empty

pop

Added in API level 9
E pop ()

从由此双端队列表示的堆栈中弹出一个元素。 换句话说,删除并返回此双端队列的第一个元素。

该方法相当于 removeFirst()

Returns
E the element at the front of this deque (which is the top of the stack represented by this deque)
Throws
NoSuchElementException

push

Added in API level 9
void push (E e)

将元素推入由此双端队列表示的堆栈。 换句话说,将元素插入此双端队列的前端。

该方法相当于 addFirst(E)

Parameters
e E: the element to push
Throws
NullPointerException if the specified element is null

remove

Added in API level 9
E remove ()

检索并删除由此双端队列表示的队列的头部。 此方法与poll仅在于,如果此双端队列为空,则会引发异常。

该方法相当于 removeFirst()

Returns
E the head of the queue represented by this deque
Throws
NoSuchElementException

remove

Added in API level 9
boolean remove (Object o)

从此双端队列中移除指定元素的单个实例。 如果该deque不包含该元素,则该值不变。 更正式地说,删除第一个元素e ,使得o.equals(e) (如果存在这样的元素)。 如果此双端队列包含指定的元素(或等效地,如果此双端队列因呼叫而改变),则返回true

这种方法相当于 removeFirstOccurrence(Object)

Parameters
o Object: element to be removed from this deque, if present
Returns
boolean true if this deque contained the specified element

removeFirst

Added in API level 9
E removeFirst ()

检索并删除此双端队列的第一个元素。 此方法与pollFirst仅在于,如果此双端队列为空,则会引发异常。

Returns
E the head of this deque
Throws
NoSuchElementException

removeFirstOccurrence

Added in API level 9
boolean removeFirstOccurrence (Object o)

删除此双端队列中首次出现的指定元素(当从头到尾遍历双端队列时)。 如果该deque不包含该元素,则该值不变。 更正式地说,删除第一个元素e ,使得o.equals(e) (如果存在这样的元素)。 如果此双端队列包含指定的元素(或等效地,如果此双端队列由于调用而更改),则返回true

Parameters
o Object: element to be removed from this deque, if present
Returns
boolean true if the deque contained the specified element

removeLast

Added in API level 9
E removeLast ()

检索并删除此双端队列的最后一个元素。 此方法与pollLast仅在于,如果此双端队列为空,则会引发异常。

Returns
E the tail of this deque
Throws
NoSuchElementException

removeLastOccurrence

Added in API level 9
boolean removeLastOccurrence (Object o)

删除此双端队列中指定元素的最后一次出现(当从头到尾遍历双端队列时)。 如果该deque不包含该元素,则该值不变。 更正式地说,删除最后一个元素e ,使得o.equals(e) (如果存在这样的元素)。 如果此双端队列包含指定的元素(或等效地,如果此双端队列由于调用而更改),则返回true

Parameters
o Object: element to be removed from this deque, if present
Returns
boolean true if the deque contained the specified element

size

Added in API level 9
int size ()

返回此双端队列中的元素数量。

Returns
int the number of elements in this deque

spliterator

Added in API level 24
Spliterator<E> spliterator ()

在此双端队列中的元素上创建一个 late-binding快速失败 Spliterator

Spliterator报告SIZEDSUBSIZEDORDERED ,并NONNULL 重写实现应记录附加特征值的报告。

Returns
Spliterator<E> a Spliterator over the elements in this deque

toArray

Added in API level 9
Object[] toArray ()

以适当的顺序返回一个包含此双端队列中所有元素的数组(从第一个元素到最后一个元素)。

返回的数组将是“安全的”,因为此双端队列没有引用它。 (换句话说,这个方法必须分配一个新的数组)。 调用者可以自由修改返回的数组。

此方法充当基于数组和基于集合的API之间的桥梁。

Returns
Object[] an array containing all of the elements in this deque

toArray

Added in API level 9
T[] toArray (T[] a)

以适当的顺序返回一个包含此双端队列中所有元素的数组(从第一个元素到最后一个元素); 返回数组的运行时类型是指定数组的运行时类型。 如果deque适合指定的数组,则返回其中。 否则,将使用指定数组的运行时类型和此双端队列的大小分配一个新数组。

如果此双端队列适合指定阵列,并有空余空间(即阵列中的元素多于此双端队列),则紧跟在双端队列末尾的阵列中的元素将设置为 null

toArray()方法一样,此方法充当基于数组和基于集合的API之间的桥梁。 此外,该方法允许精确控制输出数组的运行时类型,并且在某些情况下可以用于节省分配成本。

假设x是一个已知只包含字符串的deque。 下面的代码可以用来将deque转储到新分配的数组String

 String[] y = x.toArray(new String[0]);
Note that toArray(new Object[0]) is identical in function to toArray().

Parameters
a T: the array into which the elements of the deque are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose
Returns
T[] an array containing all of the elements in this deque
Throws
ArrayStoreException if the runtime type of the specified array is not a supertype of the runtime type of every element in this deque
NullPointerException if the specified array is null

Hooray!