queue

概述

  • Queue定义了哪些方法,是否允许添加null
  • Deque定义了哪些方法,是否允许添加null
  • BlockingQueue定义了哪些方法,是否允许添加null

queue定义了以下方法:

Queue继承Collection,Queue定义了一个线性的集合,FIFO,从一端添加元素,另一端访问元素,Queue不允许添加null,但是有个例外LinkedList它允许添加null,因为null作为特殊返回值来判断Queue是否为空
覆盖父类add方法,Queue满了抛异常
新增offer方法,Queue满了返回false

覆盖父类remove方法,Queue空时抛异常
新增poll方法,Queue空时返回null

新增element方法,获取失败抛异常
新增peak方法,获取失败返回null

Deque定义了哪些方法,是否允许添加null

Deque继承Queue,是Doule end Queue的缩写,可以从队列的两端添加、删除元素,既可以像Queue一样FIFO,也可以像Stack一样LIFO,Deque对是否能插入null这件事不做强制要求,所以LinkedList就允许添加null

覆盖了add方法,Queue满了抛异常
新增addFirst方法,Queue满了抛异常
新增addLast方法,Queue满了抛异常

覆盖了offer方法,Queue满了返回false
新增offerFirst方法,Queue满了返回false
新增offerLast方法,Queue满了返回false

覆盖了remove方法,Queue空时抛异常
新增removeFirst方法,Queue空时抛异常
新增removeLast方法,Queue空时抛异常

覆盖了poll方法,Queue空时返回null
新增pollFirst方法,Queue空时返回null
新增pollLast方法,Queue空时返回null

覆盖了element方法,Queue空时抛异常
新增getFirst方法,Queue空时抛异常
新增getLast方法,Queue空时抛异常

覆盖了peek方法,Queue空时返回null
新增peekFirst方法,Queue空时返回null
新增peekLast方法,Queue空时返回null

新增pop方法,Queue空时抛异常
新增push方法,Queue满了抛异常

BlockingQueue定义了以下方法:

BlockingQueue继承Queue,阻塞队列在获取元素时如果队列为空,就等待队列非空,在添加元素时如果队列已满,就等待队列有剩余空间,BlockingQueue的大多数添加删除方法都是线程安全的,除了addAll, retainAll, containsAll, removeAll之外,不允许添加null元素

覆盖了add方法,Queue满了抛异常
覆盖了offer方法,Queue满了返回false
新增put方法,Queue满了就阻塞
重载了offer方法,Queue满了就阻塞指定时间

新增take方法,Queue空时就阻塞
重载了poll方法,Queue空时就阻塞指定时间

参考链接