在计算机科学中,队列是一种基础概念,支撑着无数复杂系统的运行。它不仅是一种数据结构,更代表着一种有序处理、缓冲协调的设计思想。
队列的核心价值:有序与平衡
队列的本质是'先进先出'(FIFO)的线性表,主要解决三类问题:
- 顺序保证:确保数据按产生顺序被处理,适用于日志处理、事件响应等场景。
- 缓冲削峰:当数据生产速度超过消费能力时,临时存储数据,避免系统过载。
- 解耦协同:在分布式系统中,隔离生产者和消费者,使它们无需直接交互即可协同工作。
如何理解'队列'?
队列可以想象成排队买票,先来的先买,后来的人站末尾,不允许插队。栈支持入栈 push() 和出栈 pop(),队列类似,支持入队 enqueue() 和出队 dequeue()。
基础形态:顺序队列与链式队列
最朴素的队列实现有两种:
顺序队列(基于数组):适合已知数据量上限的场景,优势是随机访问快,但需要处理'假溢出'问题。
public class ArrayQueue {
// 数组:items,数组大小:n
private String[] items;
private int n = 0;
// head 表示队头下标,tail 表示队尾下标
private int head = 0;
private int tail = 0;
// 初始化队列,申请一个大小为 capacity 的数组
public ArrayQueue(int capacity) {
items = new String[capacity];
n = capacity;
}
// 入队操作
public boolean enqueue(String item) {
// tail == n 表示队列末尾没有空间了
if (tail == n) {
// tail == n && head == 0,表示整个队列都占满了
(head ==


