Queue的poll()和remove()、peek()和element()、offer()和add()

poll()和remove() 取出队列头

public E remove() {
        return removeFirst();
    }
public E removeFirst() {
        final Node f = first;
        if (f == null)
        //没有元素、则抛出异常
            throw new NoSuchElementException();
        return unlinkFirst(f);
    }
public E poll() {
        final Node f = first;
        //没有元素就返回null
        return (f == null) ? null : unlinkFirst(f);
    }

peek()和element() 返回队列头元素

在队列为空时, element() 抛出一个异常,而 peek() 返回 null

offer()和add() 添加元素

add():

boolean add(E e)将指定的元素插入到此队列中,如果可以立即执行此操作而不违反容量限制, true在成功后返回 IllegalStateException如果当前没有可用空间,则抛出IllegalStateException。

异常

  • IllegalStateException - 如果由于容量限制,此时无法添加该元素
  • ClassCastException - 如果指定元素的类阻止将其添加到此队列中
  • NullPointerException - 如果指定的元素为空,并且该队列不允许空元素
  • IllegalArgumentException - 如果此元素的某些属性阻止将其添加到此队列

offer

boolean offer(E e)如果在不违反容量限制的情况下立即执行,则将指定的元素插入到此队列中。 当使用容量限制队列时,此方法通常优于add(E) ,这可能无法仅通过抛出异常来插入元素。
结果 :
true如果元素被添加到这个队列,否则 false

异常 :

  • ClassCastException - 如果指定元素的类阻止将其添加到此队列中
  • NullPointerException - 如果指定的元素为空,并且该队列不允许空元素
  • IllegalArgumentException - 如果此元素的某些属性阻止将其添加到此队列

你可能感兴趣的:(Queue的poll()和remove()、peek()和element()、offer()和add())