Java中的队列存放数组 构建队列
时间: 2024-09-10 08:28:41 浏览: 49
Java数据结构实现之Array.zip
在Java中,队列是一种先进先出(First In First Out, FIFO)的数据结构,它通常用于管理和处理需要按照顺序执行的任务。如果你想用数组实现一个简单的队列,你可以创建一个固定大小的数组作为底层存储,并维护两个指针,一个指向当前元素的头部(front),另一个指向下一个将被添加的位置(rear)。以下是基本步骤:
1. 定义一个队列类,包含一个数组 `items` 和两个整数变量 `front` 和 `rear` 分别表示队列的头和尾。
```java
public class ArrayQueue {
private int[] items;
private int front = 0; // 队首
private int rear = -1; // 队尾
// ...其他构造函数、容量设置等...
}
```
2. 提供常见的队列操作方法,如 `enqueue()` (入队)、`dequeue()` (出队) 和 `isEmpty()` 检查队列是否为空:
```java
public void enqueue(int value) {
if ((rear + 1) % items.length == front) { // 如果已满,扩容
resize(2 * items.length); // 扩大数组容量
}
items[++rear] = value; // 入队
}
public int dequeue() {
if (isEmpty()) throw new EmptyQueueException(); // 若空抛异常
int removedValue = items[front]; // 出队
items[front++] = 0; // 清除并移动头指针
return removedValue;
}
public boolean isEmpty() {
return front == rear;
}
```
3. `resize()` 方法用于当队列接近满时,扩大数组容量以保持性能:
```java
private void resize(int newSize) {
int[] newArray = new int[newSize];
System.arraycopy(items, front, newArray, 0, rear - front + 1);
items = newArray;
front = 0;
rear = rear - front + 1;
}
```
4. 当队列不再需要时,记得释放数组资源。
阅读全文