LOADING

加载过慢请开启缓存 浏览器默认开启

Queue、Deque小结

Queue的原理:

​ Queue,队列,以先进先出的方式访问和存储元素,也就是说,从后面添加元素,从前面删除元素

​ 它的实现有以下三种方式:

ArrayDeque,LinkedList和PriorityQueue在Java中实现了Queue接口。

// 使用 LinkedList 创建
Queue<String> animal1 = new LinkedList<>();

// 使用 ArrayDeque 创建
Queue<String> animal2 = new ArrayDeque<>();

// 使用 PriorityQueue创建 (优先级队列)
Queue<String> animal3 = new PriorityQueue<>();

Queue的方法与Deque类似,就是只有队列头部删除、尾部增加的方法,所以就以Deque为例进行总结。

Deque的常用方法:

Deque的常用方法——添加元素

  • add() - 将指定的元素插入队列尾部。如果任务成功,则add()返回true,否则将引发异常。
  • addFirst() - 将指定的元素插入队列头部。如果任务成功,则addFirst()返回true,否则将引发异常。
  • offer() - 将指定的元素插入队列尾部。如果任务成功,则offer()返回true,否则返回false。
  • offerFirst() - 将指定的元素插入队列头部。如果任务成功,则offerFirst()返回true,否则返回false。
  • push() - 将指定的元素插入队列头部。如果任务成功,则push()返回true,否则返回false。

Deque的常用方法——查看元素

  • element() - 返回队列的开头。如果队列为空,则引发异常。
  • peek() - 返回队列的开头。 如果队列为空,则返回null。
  • getFirst() - 返回队列的开头。 如果队列为空,则返回null。
  • getLast() - 返回队列的结尾。 如果队列为空,则返回null。

Deque的常用方法——删除元素

  • remove() - 返回并删除队列的头部。如果队列为空,则引发异常。
  • removeLast() - 返回并删除队列的尾部。如果队列为空,则引发异常。
  • poll() - 返回并删除队列的开头。 如果队列为空,则返回null。
  • pollLast() - 返回并删除队列的尾部。 如果队列为空,则返回null。
  • pop() - 返回并删除队列的开头。 如果队列为空,则引发异常。

Deque的其余方法

  • contains() - 检查队列是否包含该元素。如果队列不包含,则返回false,包含返回true。
  • size() - 返回队列中存储元素的个数。
  • isEmpty() - 返回队列中元素是否为空。
  • for-each循环 - 迭代队列中的元素。
  • iterator() - 迭代队列中的元素。
//通过迭代器迭代Deque 
Deque<String> deque = new LinkedList<>();
 
deque.add("element 0");
deque.add("element 1");
deque.add("element 2");
 
Iterator<String> iterator = deque.iterator();
while(iterator.hasNext(){
  String element = iterator.next();
}

Queue的常用方法:

throw Exception 返回false或null
添加元素到队尾 add(E e) boolean offer(E e)
取队首元素并删除 E remove() E poll()
取队首元素但不删除 E element() E peek()
{% if theme.baidu_push %} {% endif %}