Java 中使用数组实现队列

2025年8月18日 | 阅读 3 分钟

队列是一种数据结构,可以使用数组或链表来实现。在这里,我们简要介绍了使用数组实现队列的过程。

Queue

队列是一种基于“先进先出”(FIFO)的数据结构,其中第一个输入的项目也是第一个被移除的项目。项目被添加到队列的末尾,并从队列的开头移除。

在利用数组构建队列时,数组一旦声明其大小是固定的,这对队列的实现构成了一个问题。当元素被添加到队列然后又被删除时,会产生一个空隙。为了填补这个空隙,我们可以重新排列剩余的元素来填充空间,但这需要花费大量时间。另一种选择是使用循环队列,当达到最大大小时,队头和队尾指向数组的开头。

Java 中队列的实现

队列操作

对于基于队列的系统,使用以下三个操作。

插入 (insert): 在队列的末尾/尾部添加一个项目。

删除 (remove): 从队列的开头删除一个项目。

查看 (peek): 在不移除的情况下获取队列开头的元素值。

使用数组实现队列的 Java 程序

DemoQueue.java

输出

Item added to queue: 2
Item added to queue: 3
Item deleted from queue: 2
Item deleted from queue: 3
Item added to queue: 5
Item deleted from queue: 5

从代码可以看出,随着队头和队尾向更高的索引移动,会发生插入和删除。虽然没有实现为循环队列,但会导致队列变满,无法接受新项目,即使由于删除而在队头留有空间。

CurrentSize 是一个字段,每次插入时增加,每次删除时减小,以跟踪当前大小。如果 maxSize = currentSize,则队列确实已满;否则,即使达到 maxSize,在队头仍有可用的空间,可以通过将队尾回绕来从头开始。同样,达到 maxSize 后,队头也可以回绕以从头开始。

队列的性能

在队列中,项目可以在 O(1) 的时间内插入和删除。