Deque接口是Queue接口的子接口,它代表一个双端队列,该队列允许从两端来操作队列中的元素。Deque不仅可以当成双端队列使用,而且可以当成栈来使用。
ArrayDeque集合是Deque接口的实现类,它是一个基于数组的双端队列,创建Deque时同样可以指定一个numElements参数,该参数用于指定Object[]数组的长度;如果不指定该参数,Deque底层数组长度为16。
ArrayDeque集合既可当队列使用,也可当栈使用,本篇将演示这两种典型的用法。
一 ArrayDeque集合当栈来使用。
1 代码示例
import java.util.*; public class ArrayDequeStack { public static void main(String[] args) { ArrayDeque stack = new ArrayDeque(); // 依次将三个元素push入"栈" stack.push("循循渐进Linux"); stack.push("小学语文"); stack.push("时间简史"); // 输出:[时间简史, 小学语文, 循循渐进Linux] System.out.println(stack); // 访问第一个元素,但并不将其pop出"栈",输出:时间简史 System.out.println(stack.peek()); // 依然输出:[时间简史, 小学语文, 循循渐进Linux] System.out.println(stack); // pop出第一个元素,输出:时间简史 System.out.println(stack.pop()); // 输出:[小学语文, 循循渐进Linux] System.out.println(stack); } }
2 运行结果
[时间简史, 小学语文, 循循渐进Linux]
时间简史
[时间简史, 小学语文, 循循渐进Linux]
时间简史
[小学语文, 循循渐进Linux]
3 代码说明
上面的程序显示了ArrayDeque作为队列的行为。
二 ArrayDeque集合当队列来使用
1 代码示例
import java.util.*; public class ArrayDequeQueue { public static void main(String[] args) { ArrayDeque queue = new ArrayDeque(); // 依次将三个元素加入队列 queue.offer("光头强"); queue.offer("熊大"); queue.offer("熊二"); // 输出:[光头强, 熊大, 熊二] System.out.println(queue); // 访问队列头部的元素,但并不将其poll出队列"栈",输出:光头强 System.out.println(queue.peek()); // 依然输出:[光头强, 熊大, 熊二] System.out.println(queue); // poll出第一个元素,输出:光头强 System.out.println(queue.poll()); // 输出:[熊大, 熊二] System.out.println(queue); } }
2 运行结果
[光头强, 熊大, 熊二]
光头强
[光头强, 熊大, 熊二]
光头强
[熊大, 熊二]
3 代码说明
上面的程序显示了ArrayDeque作为队列的行为。
相关推荐
arraydeque
基于数组实现:ArrayDeque 内部使用循环数组来存储元素。这种实现方式使得在两端进行插入和删除操作时具有较高的效率。 不允许存储 null 元素:与大多数Java集合不同,ArrayDeque 不允许存储 null 元素。如果试图...
主要介绍了Java集合ArrayDeque类实例分析的相关资料,需要的朋友可以参考下
ArrayDeque是一种以数组方式实现的双端队列,它是非线程安全的。下面小编和大家一起学习一下
主要介绍了java.util.ArrayDeque类使用方法,java.util.ArrayDeque类提供了可调整大小的阵列,并实现了Deque接口,感兴趣的小伙伴们可以参考一下
主要为大家详细介绍了Java ArrayDeque的使用方法,感兴趣的小伙伴们可以参考一下
arraydeque固定容量的循环缓冲区。 需要Rust 1.20+。 这个箱子的灵感来自bluss / arrayvec文档的...[no_std]情况或板条箱中使用arraydeque,则可以通过以下方式进行请求:[dependencies] arraydeque = {version =“ 0。
主要介绍了Java ArrayDeque实现Stack功能的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
双端队列在没有和库的Java中实现ArrayDeque和LinkedListDeque。
主要介绍了Java容器类源码详解 Deque与ArrayDeque,Deque 接口继承自 Queue接口,但 Deque 支持同时从两端添加或移除元素,因此又被成为双端队列。,需要的朋友可以参考下
每天一道面试题,周五冲冲冲!...- 常见实现类有LinkedList、ArrayDeque和PriorityQueue等。 4. Map(映射): - 使用键值对(key-value)的方式存储元素。 - 键是唯一的,不允许重复,每个键关联一个值。
其保障线程安全的手段是使用同步的包装所有函数,和其他线程安全的集合比起来,在多线程环境中效率很低。 ArrayDeque是基于循环拆分的双向数组,可扩容,拆分栈和样式。 平均情况下,作为栈比Stack效率更高,作为...
用泛型表示类 用泛型表示接口泛型方法 泛型通配符 反射 Class 类Field 类Method 类ClassLoader 类 枚举 枚举特性 枚举和普通类-样枚举神秘之处 枚举类 I/O File 类 基础 IO 类和相关方法InputStream ...
总体介绍 LinkedList同时实现了List接口和Deque...关于栈或队列,现在的是ArrayDeque,它有着比LinkedList(当作栈或队列使用时)有着更好的性能。 LinkedList底层通过双向链表实现,本节将着重讲解插入和删
前面以Java ArrayDeque为例讲解了Stack和Queue,其实还有一种特殊的队列叫做PriorityQueue,即优先队列。优先队列的作用是能保证每次取出的元素都是队列中权值小的(Java的优先队列每次取小元素,C++的优先队列...
ArrayDeque (done) Set HashSet (done) TreeSet (done) LinkedHashSet (done) BitSet (done) Map HashMap (done) Hashtable (done) Properties (done) LinkedHashMap (done) IdentityHashMap (done) TreeMap (done) ...
Docker使用 Linux常用命令 Git教程 Git简介 安装Git 创建版本库 时光机穿梭 git本地仓库与github仓库关联命令 分支管理 Java基础 Java并发 Java线程池学习总结 Java容器 Java集合框架概览 ArrayList源码剖析 ...
1、用了Java两种方式,都挺好的,ArrayDeque的性能比LinkedList要强很多(都可以做队列),所以我就都写了一下,传入根结点即可(没有用数组存二叉树) /** * 层序遍历,使用了ArrayDeque,一个循环数组,性能很好...