跳转到主内容
极星编程网:以代码为星,赴技术山海!

在Java中如何使用Deque实现队列和栈操作_Deque集合实践经验

推荐使用ArrayDeque实现队列和栈操作,因其性能优、内存开销小。通过offerLast/pollFirst实现FIFO队列,offerFirst/pollFirst实现LIFO栈,方法语义清晰且操作高效。 在Java中, Deque (双端队列)接口是实现队列和栈操作的高效工具。它允许从两端插入和删除元素,因此既可以当作队列(FIFO),也可以当作栈(LIFO)来使用。实际开发中,推荐使用 ArrayDeque 作为 Deque 的实现类,因为它性能好、内存开销小,且不支持 null 元素,避免潜在问题。 使用 Deque 实现队列(FIFO) 队列遵循“先进先出”原则。通过在队尾添加元素、队头移除元素,可以模拟标准队列行为。 常用方法:
offerLast(e)
:在队尾入队
pollFirst()
:在队头出队
peekFirst()
:查看队头元素(不移除) 示例代码: 立即学习 “ Java免费学习笔记(深入) ”;
Deque queue = new ArrayDeque<>(); queue.offerLast("A"); queue.offerLast("B"); queue.offerLast("C"); System.out.println(queue.pollFirst()); // 输出 A System.out.println(queue.pollFirst()); // 输出 B
这样就实现了标准的 FIFO 队列逻辑。 使用 Deque 实现栈(LIFO) 栈遵循“后进先出”原则。只需统一在队头进行操作,即可模拟栈的行为。 Eclipse导入Android或其他的JAVA项目的正确方法 WORD版 本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看 下载 常用方法:
offerFirst(e)
或
push(e)
:入栈
pollFirst()
或
pop()
:出栈
peekFirst()
:查看栈顶元素 示例代码: 立即学习 “ Java免费学习笔记(深入) ”;
Deque stack = new ArrayDeque<>(); stack.push(1); stack.push(2); stack.push(3); System.out.println(stack.pop()); // 输出 3 System.out.println(stack.pop()); // 输出 2
所有操作集中在同一端,完全符合栈的操作特性。 选择 Deque 而不是 Stack 和 Queue 的原因 Java 中虽然有
Stack
类和
Queue
接口,但 Deque 更灵活、性能更好。 ArrayDeque 比传统
Stack
类更高效,且后者已过时 Deque 支持 O(1) 时间复杂度的头尾操作 避免使用
LinkedList
模拟栈或队列,虽然可行但不是最优选择 Deque 提供更清晰的方法命名,语义明确 基本上就这些。用好 offerFirst、offerLast、pollFirst、pollLast 这几个核心方法,就能灵活控制数据进出方向,轻松实现队列与栈功能。实践中优先选用 ArrayDeque,简洁高效。

相关文章