理解
AbstractQueue(抽象队列)继承了AbstractCollection同时实现了Queue接口,定义了队列基础的一些重要的方法。
源码
public abstract class AbstractQueue<E>
extends AbstractCollection<E>
implements Queue<E> {
/**
* Constructor for use by subclasses.
*/
protected AbstractQueue() {
}
/**
*
* @param e 向队列中添加的结点
* @return 返回true
* @throws 不合法状态异常 如果此时无法添加元素(由于容量限制而导致的)
*/
public boolean add(E e) {
if (offer(e))
return true;
else
throw new IllegalStateException("Queue full");
}
/**
*
* 移除队列头部结点
*
* @return 返回队列头部结点
* @throws 如果队列为空 则会抛出没有结点异常信息
*/
public E remove() {
E x = poll();
if (x != null)
return x;
else
throw new NoSuchElementException();
}
/**
*
* @return 返回队列头部结点
* @throws 如果队列为空 则会抛出没有结点异常信息
*/
public E element() {
E x = peek();
if (x != null)
return x;
else
throw new NoSuchElementException();
}
/**
*清空队列 将移除队列中所有的结点
*
*/
public void clear() {
while (poll() != null)
;
}
/**
* 将一个集合中的元素添加到队列中
*
* @param c 包含要添加到此队列的元素的集合
* @return 添加成功返回true
* @throws 如果集合为空 则抛出空指针异常
* @throws 如果集合等于队列本地则抛出不合法参数异常
*/
public boolean addAll(Collection<? extends E> c) {
if (c == null)
throw new NullPointerException();
if (c == this)
throw new IllegalArgumentException();
boolean modified = false;
for (E e : c)
if (add(e))
modified = true;
return modified;
}
}