2026/4/18 11:59:59
网站建设
项目流程
做百度网站接到多少客户电话号码,1 建设网站目的,网站建设经费预算包括哪些,公司简介模板免费如何写ArrayDeque 是 Java 集合框架 中的一个类#xff0c;它是一个基于可调整大小的循环数组实现的双端队列是Deque接口的实现类之一继承关系#xff1a;Iterable (接口)↓
Collection (接口)↓
Queue (接口)↓
Deque (接口)↓
┌─────────────────┐
│ ArrayD…ArrayDeque是Java 集合框架中的一个类它是一个基于可调整大小的循环数组实现的双端队列是Deque接口的实现类之一继承关系Iterable (接口) ↓ Collection (接口) ↓ Queue (接口) ↓ Deque (接口) ↓ ┌─────────────────┐ │ ArrayDeque (类) │ ← 具体实现 └─────────────────┘主要特点1.数据结构底层使用动态数组循环数组实现允许从两端高效地添加/移除元素内存连续访问速度快2.核心特性线程不安全非同步不允许存储 null 元素初始容量默认为16自动扩容2倍既可作为栈Stack使用也可作为队列Queue使用性能通常优于 LinkedList作为队列/栈时常用方法队列操作FIFOArrayDequeString deque new ArrayDeque(); // 添加元素到队尾 deque.offer(A); // 推荐 deque.add(B); // 可能抛出异常 deque.offerLast(C); // 明确指定队尾 // 从队首移除并返回 String first deque.poll(); // 返回null如果为空 String first2 deque.remove(); // 抛出异常如果为空 String first3 deque.pollFirst(); // 查看队首不移除 String peek deque.peek(); String peek2 deque.peekFirst();栈操作LIFO// 作为栈使用 ArrayDequeString stack new ArrayDeque(); // 压栈 stack.push(A); // 添加到队首 stack.addFirst(B); // 弹栈 String top stack.pop(); // 移除队首 String top2 stack.pollFirst(); // 查看栈顶 String peek stack.peek(); String peek2 stack.peekFirst();双端队列操作// 队首操作 deque.addFirst(First); deque.offerFirst(First); deque.removeFirst(); deque.pollFirst(); // 队尾操作 deque.addLast(Last); deque.offerLast(Last); deque.removeLast(); deque.pollLast();性能对比操作ArrayDequeLinkedList添加/删除两端O(1)*O(1)随机访问O(1)O(n)内存使用更紧凑更多节点开销遍历速度更快缓存友好较慢注意ArrayDeque的O(1)是分摊时间复杂度扩容时会有额外开销使用场景推荐推荐使用 ArrayDeque作为栈使用替代过时的 Stack 类// 推荐 DequeInteger stack new ArrayDeque(); // 不推荐已过时 StackInteger oldStack new Stack();作为队列使用QueueString queue new ArrayDeque();需要高效的双端操作DequeInteger deque new ArrayDeque();不适合的场景需要线程安全考虑使用 ConcurrentLinkedDeque需要存储 null 元素需要频繁在中间插入/删除示例代码public class ArrayDequeExample { public static void main(String[] args) { // 1. 作为队列 QueueInteger queue new ArrayDeque(); queue.offer(1); queue.offer(2); System.out.println(queue.poll()); // 1 // 2. 作为栈 DequeInteger stack new ArrayDeque(); stack.push(1); stack.push(2); System.out.println(stack.pop()); // 2 // 3. 作为双端队列 ArrayDequeString deque new ArrayDeque(); deque.addFirst(First); deque.addLast(Last); System.out.println(deque); // [First, Last] } }注意事项线程安全ArrayDeque 不是线程安全的多线程环境下需要外部同步容量限制最大容量是Integer.MAX_VALUE - 8迭代器迭代器是 fail-fast 的性能在大多数场景下作为栈/队列使用时性能优于 LinkedList总结ArrayDeque 是 Java 中实现队列和栈的首选类它提供了高效的性能、简洁的API并且比传统的Stack类更现代、更安全。