📜  java中的队列(1)

📅  最后修改于: 2023-12-03 14:42:59.436000             🧑  作者: Mango

Java中的队列

在计算机科学中,队列是一种有序的数据结构,它遵循先进先出(FIFO)的原则。在Java中,队列是通过Queue接口实现的。

Queue接口

Queue接口代表一个队列,它定义了一些常用的队列操作。Queue接口提供了两类操作:一类是修改队列的操作,一类是查询队列的操作。如下:

修改队列的操作
  • add(element):向队列中添加一个元素,如果队列已满,则抛出异常。

  • offer(element):向队列中添加一个元素,如果队列已满,则返回false。

  • remove():移除并返回队列头部的元素,如果队列为空,则抛出异常。

  • poll():移除并返回队列头部的元素,如果队列为空,则返回null。

  • element():返回队列头部的元素,如果队列为空,则抛出异常。

  • peek():返回队列头部的元素,如果队列为空,则返回null。

查询队列的操作
  • size():返回队列中的元素数量。

  • isEmpty():判断队列是否为空。

  • contains(Object o):判断队列中是否包含指定的元素。

  • toArray():将队列中的元素以数组的形式返回。

实现队列的类

Java中提供了多种队列实现类,如下:

LinkedList

LinkedList实现了Queue接口,因此可以将LinkedList用作队列。

Queue<String> queue = new LinkedList<>();

queue.offer("Java");
queue.offer("Python");
queue.offer("C++");

while (!queue.isEmpty()) {
    System.out.println(queue.poll());
}
ArrayDeque

ArrayDeque也实现了Queue接口,它类似于一个动态数组,可以高效地添加和删除元素。

Queue<String> queue = new ArrayDeque<>();

queue.offer("Java");
queue.offer("Python");
queue.offer("C++");

while (!queue.isEmpty()) {
    System.out.println(queue.poll());
}
PriorityQueue

PriorityQueue是一个优先级队列,它可以按照指定的排序顺序自动排序元素。

Queue<Integer> queue = new PriorityQueue<>();

queue.offer(3);
queue.offer(1);
queue.offer(2);

while (!queue.isEmpty()) {
    System.out.println(queue.poll());
}
总结

队列是Java中常用的数据结构之一,通过Queue接口可以方便地实现队列操作。Java中提供了多种队列实现类,开发者可以根据需要选择最合适的类来实现队列。