|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.util.AbstractCollection<E> java.util.ArrayDeque<E>
E
- the type of elements held in this collection
public class ArrayDeque<E>
Deque
接口的大小可变数组的实现。数组双端队列没有容量限制;它们可根据需要增加以支持使用。它们不是线程安全的;在没有外部同步时,它们不支持多个线程的并发访问。禁止 null 元素。此类很可能在用作堆栈时快于 Stack
,在用作队列时快于 LinkedList
。
大多数 ArrayDeque 操作以摊销的固定时间运行。异常包括 remove
、removeFirstOccurrence
、removeLastOccurrence
、contains
、iterator.remove()
以及批量操作,它们均以线性时间运行。
此类的 iterator 方法返回的迭代器是快速失败 的:如果在创建迭代器后的任意时间通过除迭代器本身的 remove 方法之外的任何其他方式修改了双端队列,则迭代器通常将抛出 ConcurrentModificationException
。因此,面对并发修改,迭代器很快就会完全失败,而不是冒着在将来不确定的时刻任意发生不确定行为的风险。
注意,迭代器的快速失败行为不能得到保证,一般来说,存在不同步的并发修改时,不可能作出任何坚决的保证。快速失败迭代器尽最大努力抛出 ConcurrentModificationException。因此,编写依赖于此异常的程序是错误的,正确做法是:迭代器的快速失败行为应该仅用于检测 bug。
此类及其迭代器实现 Collection
和 Iterator
接口的所有可选 方法。
此类是 Java Collections Framework 的成员。
构造方法摘要 | |
---|---|
ArrayDeque() 构造一个初始容量能够容纳 16 个元素的空数组双端队列。 |
|
ArrayDeque(Collection<? extends E> c) 构造一个包含指定 collection 的元素的双端队列,这些元素按 collection 的迭代器返回的顺序排列。 |
|
ArrayDeque(int numElements) 构造一个初始容量能够容纳指定数量的元素的空数组双端队列。 |
方法摘要 | ||
---|---|---|
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() 返回此双端队列中的元素数。 |
|
Object[] |
toArray() 返回一个以恰当顺序包含此双端队列所有元素的数组(从第一个元素到最后一个元素)。 |
|
|
toArray(T[] a) 返回一个以恰当顺序包含此双端队列所有元素的数组(从第一个元素到最后一个元素);返回数组的运行时类型是指定数组的运行时类型。 |
从类 java.util.AbstractCollection 继承的方法 |
---|
addAll, containsAll, removeAll, retainAll, toString |
从类 java.lang.Object 继承的方法 |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
从接口 java.util.Collection 继承的方法 |
---|
addAll, containsAll, equals, hashCode, removeAll, retainAll |
构造方法详细信息 |
---|
public ArrayDeque()
public ArrayDeque(int numElements)
numElements
- 双端队列初始容量的下边界
public ArrayDeque(Collection<? extends E> c)
c
- 要将其元素放入双端队列的 collection
NullPointerException
- 如果指定 collection 为 null
方法详细信息 |
---|
public void addFirst(E e)
Deque<E>
中的
addFirst
e
- 要添加的元素
NullPointerException
- 如果指定元素为 null
public void addLast(E e)
此方法等效于 add(E)
。
Deque<E>
中的
addLast
e
- 要添加的元素
NullPointerException
- 如果指定元素为 null
public boolean offerFirst(E e)
Deque<E>
中的
offerFirst
e
- 要添加的元素
Deque.offerFirst(E)
的规定)
NullPointerException
- 如果指定元素为 null
public boolean offerLast(E e)
Deque<E>
中的
offerLast
e
- 要添加的元素
Deque.offerLast(E)
的规定)
NullPointerException
- 如果指定元素为 null
public E removeFirst()
Deque
复制的描述
pollFirst
唯一的不同在于:如果此双端队列为空,它将抛出一个异常。
Deque<E>
中的
removeFirst
NoSuchElementException
- 如果此双端队列为空
public E removeLast()
Deque
复制的描述
pollLast
唯一的不同在于:如果此双端队列为空,它将抛出一个异常。
Deque<E>
中的
removeLast
NoSuchElementException
- 如果此双端队列为空
public E pollFirst()
Deque
复制的描述
Deque<E>
中的
pollFirst
public E pollLast()
Deque
复制的描述
Deque<E>
中的
pollLast
public E getFirst()
Deque
复制的描述
peekFirst
唯一的不同在于:如果此双端队列为空,它将抛出一个异常。
Deque<E>
中的
getFirst
NoSuchElementException
- 如果此双端队列为空
public E getLast()
Deque
复制的描述
peekLast
唯一的不同在于:如果此双端队列为空,它将抛出一个异常。
Deque<E>
中的
getLast
NoSuchElementException
- 如果此双端队列为空
public E peekFirst()
Deque
复制的描述
Deque<E>
中的
peekFirst
public E peekLast()
Deque
复制的描述
Deque<E>
中的
peekLast
public boolean removeFirstOccurrence(Object o)
Deque<E>
中的
removeFirstOccurrence
o
- 要从此双端队列中移除的元素(如果存在)
public boolean removeLastOccurrence(Object o)
Deque<E>
中的
removeLastOccurrence
o
- 要从此双端队列中移除的元素(如果存在)
public boolean add(E e)
此方法等效于 addLast(E)
。
Collection<E>
中的
add
Deque<E>
中的
add
Queue<E>
中的
add
AbstractCollection<E>
中的
add
e
- 要添加的元素
Collection.add(E)
的规定)
NullPointerException
- 如果指定元素为 null
public boolean offer(E e)
此方法等效于 offerLast(E)
。
Deque<E>
中的
offer
Queue<E>
中的
offer
e
- 要添加的元素
Queue.offer(E)
的规定)
NullPointerException
- 如果指定元素为 null
public E remove()
poll
的不同之处在于:如果此双端队列为空,它将抛出一个异常。
此方法等效于 removeFirst()
。
Deque<E>
中的
remove
Queue<E>
中的
remove
NoSuchElementException
- 如果此双端队列为空
public E poll()
此方法等效于 pollFirst()
。
Deque<E>
中的
poll
Queue<E>
中的
poll
public E element()
peek
的不同之处在于:如果此双端队列为空,它将抛出一个异常。
此方法等效于 getFirst()
。
Deque<E>
中的
element
Queue<E>
中的
element
NoSuchElementException
- 如果此双端队列为空
public E peek()
此方法等效于 peekFirst()
。
Deque<E>
中的
peek
Queue<E>
中的
peek
public void push(E e)
此方法等效于 addFirst(E)
。
Deque<E>
中的
push
e
- 要推入的元素
NullPointerException
- 如果指定元素为 null
public E pop()
此方法等效于 removeFirst()
。
Deque<E>
中的
pop
NoSuchElementException
- 如果此双端队列为空
public int size()
Collection<E>
中的
size
Deque<E>
中的
size
AbstractCollection<E>
中的
size
public boolean isEmpty()
Collection<E>
中的
isEmpty
AbstractCollection<E>
中的
isEmpty
public Iterator<E> iterator()
remove()
)或弹出(通过连续调用
pop()
)的顺序相同。
Iterable<E>
中的
iterator
Collection<E>
中的
iterator
Deque<E>
中的
iterator
AbstractCollection<E>
中的
iterator
public Iterator<E> descendingIterator()
Deque
复制的描述
Deque<E>
中的
descendingIterator
public boolean contains(Object o)
Collection<E>
中的
contains
Deque<E>
中的
contains
AbstractCollection<E>
中的
contains
o
- 检查是否包含于此双端队列的对象
public boolean remove(Object o)
此方法等效于 removeFirstOccurrence(java.lang.Object)
。
Collection<E>
中的
remove
Deque<E>
中的
remove
AbstractCollection<E>
中的
remove
o
- 要从此双端队列中移除的元素(如果存在)
public void clear()
Collection<E>
中的
clear
AbstractCollection<E>
中的
clear
public Object[] toArray()
由于此双端队列不维护对返回数组的任何引用,因而它将是“安全的”。(换句话说,此方法必须分配一个新的数组)。因此,调用者可以自由地修改返回的数组。
此方法充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。
Collection<E>
中的
toArray
AbstractCollection<E>
中的
toArray
public <T> T[] toArray(T[] a)
如果指定的数组能容纳此双端队列,并有剩余的空间(即数组的元素比此双端队列多),那么将数组中紧接双端队列尾部的元素设置为 null。
像 toArray()
方法一样,此方法充当基于数组的 API 与基于 collection 的 API 之间的桥梁。更进一步说,此方法允许对输出数组的运行时类型进行精确控制,在某些情况下,还可以用来节省分配开销。
假定 x 是只包含字符串的一个已知双端队列。以下代码可用来将该双端队列转储到一个新分配的 String 数组:
String[] y = x.toArray(new String[0]);注意, toArray(new Object[0]) 和 toArray() 在功能上是相同的。
Collection<E>
中的
toArray
AbstractCollection<E>
中的
toArray
a
- 要用来存储双端队列元素的数组(如果该数组足够大);否则,将为此分配一个具有相同运行时类型的新数组
ArrayStoreException
- 如果指定数组的运行时类型不是此双端队列每个元素的运行时类型的超类型
NullPointerException
- 如果指定的数组为 null
public ArrayDeque<E> clone()
Object
中的
clone
Cloneable
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。