ArrayDeque类的使用
一.概述
Deque接口是Queue接口的子接口,它代表一个双端队列,该队列允许从两端来操作队列中的元素。Deque不仅可以当成双端队列使用,而且可以当成栈来使用。
ArrayDeque集合是Deque接口的实现类,它是一个基于数组的双端队列,创建Deque时同样可以指定一个numElements参数,该参数用于指定Object[]数组的长度;如果不指定该参数,Deque底层数组长度为16。
二.常用方法
1.添加元素
- addFirst(E e)在数组前面添加元素
addLast(E e)在数组后面添加元素
offerFirst(E e) 在数组前面添加元素,并返回是否添加成功
offerLast(E e) 在数组后天添加元素,并返回是否添加成功
2.删除元素
- removeFirst()删除第一个元素,并返回删除元素的值,如果元素为null,将抛出异常
pollFirst()删除第一个元素,并返回删除元素的值,如果元素为null,将返回null
removeLast()删除最后一个元素,并返回删除元素的值,如果为null,将抛出异常
pollLast()删除最后一个元素,并返回删除元素的值,如果为null,将返回null
removeFirstOccurrence(Object o) 删除第一次出现的指定元素
removeLastOccurrence(Object o) 删除最后一次出现的指定元素
3.获取元素
- getFirst() 获取第一个元素,如果没有将抛出异常
getLast() 获取最后一个元素,如果没有将抛出异常
4.队列操作
- add(E e) 在队列尾部添加一个元素
offer(E e) 在队列尾部添加一个元素,并返回是否成功
remove() 删除队列中第一个元素,并返回该元素的值,如果元素为null,将抛出异常(其实底层调用的是removeFirst())
poll() 删除队列中第一个元素,并返回该元素的值,如果元素为null,将返回null(其实调用的是pollFirst())
pollFirst() 检索并删除此deque的第一个元素,如果此deque为空,则返回 null 。
pollLast() 检索并删除此deque的最后一个元素,如果此deque为空,则返回 null 。
element() 获取第一个元素,如果没有将抛出异常
peek() 获取第一个元素,如果返回null
peekFirst()检索但不删除此deque的第一个元素,如果此deque为空,则返回 null
peekLast()检索但不删除此deque的最后一个元素,如果此deque为空,则返回 null
5.栈操作 - push(E e) 栈顶添加一个元素
pop(E e) 移除栈顶元素,如果栈顶没有元素将抛出异常
6.其他
- size() 获取队列中元素个数
isEmpty() 判断队列是否为空
iterator() 迭代器,从前向后迭代
descendingIterator() 迭代器,从后向前迭代
contain(Object o) 判断队列中是否存在该元素
toArray() 转成数组
clear() 清空队列
clone() 克隆(复制)一个新的队列
三.实例
ArrayDeque集合既可当队列使用,也可当栈使用,见实例如下:
1. ArrayDeque集合当栈来使用
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. ArrayDeque集合当队列来使用
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); }
}
参考:
https://www.iteye.com/blog/cakin24-2324030
https://www.cnblogs.com/chenglc/p/10722304.html
ArrayDeque类的使用相关推荐
- 集合框架之ArrayDeque类详解
Java集合框架分析(Deque)---ArrayDeque类详解 目录 一.数据结构 二.类标题 三.字段 四.构造函数 五.方法分析 类型 方法 作用 添加元素 public void addFi ...
- java addfirst_java – ArrayDeque类的addFirst方法
以下行的功能基本上是(head-1)MODULO(elements.length),因此当head == 0时,从head减去1将导致最大可能值而不是-1. head = (head - 1) &am ...
- Java.util包中常用的类
Java.util包 Java.util.ArrayDeque类 Java.util.ArrayList类 Java.util.Arrays类 Java.util.BitSet类 Java.util. ...
- java 方法 示例_Java ArrayDeque pollFirst()方法与示例
java 方法 示例 ArrayDeque类pollFirst()方法 (ArrayDeque Class pollFirst() method) pollFirst() Method is avai ...
- java 方法 示例_Java ArrayDeque offerFirst()方法与示例
java 方法 示例 ArrayDeque类offerFirst()方法 (ArrayDeque Class offerFirst() method) offerFirst() Method is a ...
- sheets.add示例_Java ArrayDeque add()方法与示例
sheets.add示例 ArrayDeque类add()方法 (ArrayDeque Class add() method) add() Method is available in java.la ...
- java peek方法_Java ArrayDeque peek()方法与示例
java peek方法 ArrayDeque类peek()方法 (ArrayDeque Class peek() method) peek() Method is available in java. ...
- element 项目 示例_Java ArrayDeque element()方法与示例
element 项目 示例 ArrayDeque类element()方法 (ArrayDeque Class element() method) element() Method is availab ...
- java isempty_Java ArrayDeque isEmpty()方法与示例
java isempty ArrayDeque类isEmpty()方法 (ArrayDeque Class isEmpty() method) isEmpty() Method is availabl ...
最新文章
- 升讯威微信营销系统开发实践:(3)功能介绍与此项目推广过程的一些体会( 完整开源于 Github)...
- 【CSS3 DEMO】扑克正反面翻牌效果
- 解决element-ui table 表格排列错位问题
- vue的v-html使用
- php PHP-FPM进程数的设定
- Dropping water balloons
- 采用C语言写文本文件实例
- 报告,开启新副本!经典赛强势回归
- Quartus II 15详细安装教程
- clover更新驱动 后不能开机_MAC 10.14 安装教程-CLOVER的简单操作说明
- ASP.NET大作业/ASP.NET期末项目/大作业
- python实现获取ip、网站备案信息、whois查询
- 朴素贝叶斯分类器(离散型)算法实现(一)
- 实验四实验四实验四啊!
- python猴子吃桃问题_用Python解决猴子吃桃问题
- Java 一元、二元运算符、三目条件运算符(三元运算符)
- git 的批量克隆 批量切换分支 批量pull
- C语言中的#if语句使用
- Python3学习3 格式化 % format
- 怎样通过百度文库引流?使得你的网络业绩倍增