java.util
类 AbstractQueue<E>
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractQueue<E>
类型参数:
E - 此 collection 中所保存元素的类型
所有已实现的接口:
Iterable<E>, Collection<E>, Queue<E>
直接已知子类:
ArrayBlockingQueue, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, PriorityBlockingQueue, PriorityQueue, SynchronousQueue
public abstract class AbstractQueue<E>
extends AbstractCollection<E>
implements Queue<E>
此类提供某些 Queue 操作的骨干实现。此类中的实现适用于基本实现不 允许包含 null 元素时。add、remove 和 element 方法分别基于 offer、poll 和 peek 方法,但是它们通过抛出异常而不是返回 false 或 null 来指示失败。
扩展此类的 Queue 实现至少必须定义一个不允许插入 null 元素的 Queue.offer(E) 方法,该方法以及 Queue.peek()、Queue.poll()、Collection.size() 和 Collection.iterator() 都支持 Iterator.remove() 方法。通常还要重写其他方法。如果无法满足这些要求,那么可以转而考虑为 AbstractCollection 创建子类。
此类是 Java Collections Framework 的成员。
从以下版本开始:
1.5
======== CONSTRUCTOR SUMMARY ========
构造方法摘要 | |
protected | AbstractQueue() 子类使用的构造方法。 |
========== METHOD SUMMARY ===========
方法摘要 | |
boolean | add(E e) 将指定的元素插入到此队列中(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用空间,则抛出 IllegalStateException。 |
boolean | addAll(Collection<? extends E> c) 将指定 collection 中的所有元素都添加到此队列中。 |
void | clear() 移除此队列中的所有元素。 |
E | element() 获取但不移除此队列的头。 |
E | remove() 获取并移除此队列的头。 |
从类 java.util.AbstractCollection 继承的方法 |
contains, containsAll, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray, toString |
从类 java.lang.Object 继承的方法 |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
从接口 java.util.Queue 继承的方法 |
offer, peek, poll |
从接口 java.util.Collection 继承的方法 |
contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray |
========= CONSTRUCTOR DETAIL ========
构造方法详细信息 |
AbstractQueue
protected AbstractQueue()
子类使用的构造方法。
============ METHOD DETAIL ==========
方法详细信息 |
add
public boolean add(E e)
将指定的元素插入到此队列中(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用空间,则抛出 IllegalStateException。
如果 offer 成功,则此实现返回 true,否则抛出 IllegalStateException。
指定者:
接口 Collection<E> 中的 add
指定者:
接口 Queue<E> 中的 add
覆盖:
类 AbstractCollection<E> 中的 add
参数:
e - 要添加的元素
返回:
true(根据 Collection.add(E) 的规定)
抛出:
IllegalStateException - 如果此时由于容量限制不能添加元素
ClassCastException - 如果指定元素的类不允许将该元素添加到此队列中
NullPointerException - 如果指定元素为 null 并且此队列不允许 null 元素
IllegalArgumentException - 如果此元素的某些属性不允许将该元素添加到此队列中
remove
public E remove()
获取并移除此队列的头。此方法与 poll 唯一的不同在于:此队列为空时将抛出一个异常。
除非队列为空,否则此实现返回 poll 的结果。
指定者:
接口 Queue<E> 中的 remove
返回:
此队列的头
抛出:
NoSuchElementException - 如果此队列为空
element
public E element()
获取但不移除此队列的头。此方法与 peek 唯一的不同在于:此队列为空时将抛出一个异常。
除非队列为空,否则此实现返回 peek 的结果。
指定者:
接口 Queue<E> 中的 element
返回:
此队列的头
抛出:
NoSuchElementException - 如果此队列为空
clear
public void clear()
移除此队列中的所有元素。此调用返回后,队列将为空。
此实现重复调用 poll,直到它返回 null 为止。
指定者:
接口 Collection<E> 中的 clear
覆盖:
类 AbstractCollection<E> 中的 clear
addAll
public boolean addAll(Collection<? extends E> c)
将指定 collection 中的所有元素都添加到此队列中。如果试图将某一队列 addAll 到该队列本身中,则会导致 IllegalArgumentException。此外,如果正在进行此操作时修改指定的 collection,则此操作的行为是不确定的。
此实现在指定的 collection 上进行迭代,并依次将迭代器返回的每一个元素添加到此队列中。在试图添加某一元素(尤其是 null 元素)时如果遇到了运行时异常,则可能导致在抛出相关异常时只成功地添加了某些元素。
指定者:
接口 Collection<E> 中的 addAll
覆盖:
类 AbstractCollection<E> 中的 addAll
参数:
c - 包含要添加到此队列的元素的 collection
返回:
如果此队列由于调用而发生更改,则返回 true
抛出:
ClassCastException - 如果指定 collection 元素的类不允许将该元素添加到此队列中
NullPointerException - 如果指定 collection 包含一个 null 元素并且此队列不允许 null 元素,或者指定 collection 为 null
IllegalArgumentException - 如果指定 collection 元素的某些属性不允许将该元素添加到此队列中,或者指定 collection 是此队列
IllegalStateException - 如果此时由于插入限制无法添加所有元素
另请参见:
add(Object)