java用栈实现队列
时间: 2024-09-18 08:00:16 浏览: 6
在Java中,可以使用栈(Stack)数据结构来模拟队列(Queue)的行为,这通常通过“双端队列”(Deque)接口实现,如`java.util.Deque`。这里是一个简单的例子:
```java
import java.util.Stack;
public class StackBasedQueue {
private Stack<Integer> stack = new Stack<>();
// 插入操作(类似于enqueue)
public void enqueue(int value) {
stack.push(value);
}
// 取出操作(类似于dequeue)
public int dequeue() {
if (stack.isEmpty()) {
throw new IllegalStateException("Queue is empty");
}
return stack.pop(); // 弹出并返回顶部元素,模拟队列先进先出原则
}
// 查看队头元素
public int peek() {
if (stack.isEmpty()) {
return -1; // 或者抛异常,视需求而定
}
return stack.peek(); // 返回顶部元素但不弹出
}
// 判断队列是否为空
public boolean isEmpty() {
return stack.isEmpty();
}
}
```
在这个例子中,当需要从队列头部添加元素(enqueue),就直接压入栈顶;从队列头部取出元素(dequeue)时,则弹出栈顶元素。这种方法虽然实现了基本的队列功能,但效率不如专门设计的队列高效,因为每次删除操作都需要遍历整个栈。