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