JAVA实现一个先进先出的队列,并用测试类进行测试
时间: 2024-09-19 22:13:09 浏览: 38
在Java中,我们可以使用`java.util.LinkedList`类来实现一个先进先出(First In First Out, FIFO)的队列,因为LinkedList提供了一个方便的`addFirst()`方法用于添加元素到队列头部,以及一个`removeFirst()`方法用于移除并返回队头的第一个元素。
首先,创建一个名为`FIFOQueue`的简单队列类:
```java
import java.util.LinkedList;
public class FIFOQueue<T> {
private LinkedList<T> queue;
public FIFOQueue() {
this.queue = new LinkedList<>();
}
// 添加元素到队首
public void enqueue(T item) {
queue.addFirst(item);
}
// 删除队首元素
public T dequeue() {
if (queue.isEmpty()) {
throw new IllegalStateException("Queue is empty");
}
return queue.removeFirst();
}
// 检查队列是否为空
public boolean isEmpty() {
return queue.isEmpty();
}
// 返回队列大小
public int size() {
return queue.size();
}
}
```
接下来,我们可以编写一个测试类`FIFOQueueTest`来进行功能验证:
```java
import org.junit.Test;
import static org.junit.Assert.*;
public class FIFOQueueTest {
@Test
public void testEnqueueAndDequeue() {
FIFOQueue<Integer> queue = new FIFOQueue<>();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
assertEquals(1, queue.dequeue());
assertEquals(2, queue.dequeue());
try {
queue.dequeue(); // 应该抛出异常,因为队列已空
fail("Expected an exception to be thrown");
} catch (IllegalStateException e) {
assertEquals("Queue is empty", e.getMessage());
}
assertEquals(0, queue.size()); // 队列应该为空
}
@Test
public void testEmptyQueue() {
FIFOQueue<Integer> emptyQueue = new FIFOQueue<>();
assertTrue(emptyQueue.isEmpty());
emptyQueue.enqueue(4);
assertFalse(emptyQueue.isEmpty());
}
}
```
阅读全文