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集合的妙用相关推荐

  1. 程序员基本功03常见JAVA集合的实现细节

    笔记笔记自己看的 1.Set和Map的关联之处 Set代表一种集合元素无序.不可重复的集合,Map代表一种由多个键值对组成的集合.Map集合的Key之间不能重复且无序,也就是说,把map里的key单列 ...

  2. ArrayDeque类的使用

    一.概述 Deque接口是Queue接口的子接口,它代表一个双端队列,该队列允许从两端来操作队列中的元素.Deque不仅可以当成双端队列使用,而且可以当成栈来使用. ArrayDeque集合是Dequ ...

  3. 分享Silverlight/WPF/Windows Phone一周学习导读(8月15日-8月19日)

    分享Silverlight/WPF/Windows Phone一周学习导读(8月15日-8月19日) 本周Silverlight学习资源更新: Silverlight Tools 4安装时的错误提示 ...

  4. Spring AOP源码(1)—<aop:config/>AOP配置标签解析【一万字】

      基于最新Spring 5.x,对Spring AOP中的<aop:config/>标签的解析源码进行了详细分析,这是Spring AOP源码的入口!   此前我们已经详细学习了Spri ...

  5. 栈与队列及其应用 - 1.算术表达式求值

    使用到了ArrayDeque集合:使用ArrayDeque表示Queue比LinkedList.表示Stack效率更高 ArrayDeque使用详解 package com.kiger.Demo;im ...

  6. Electron + vue搭建项目

    声明 本人也在不断的学习和积累中,文章中有不足和误导的地方还请见谅,可以给我留言指正.希望和大家共同进步,共建和谐学习环境. 背景 最近公司想要开发一款桌面应用,在众多的跨平台桌面框架中,我选择了el ...

  7. python:实战篇

    python 实战 §python 实战篇 §1.python解压 1. python解压zip.7z 2. python 解压rar 1)windows: 2)linux: §2.python执行L ...

  8. 4、深潜KafkaProducer —— RecordAccumulator精析

    通过上一课时的介绍我们了解到,业务线程使用 KafkaProducer.send() 方法发送 message 的时候,会先将其写入RecordAccumulator 中进行缓冲,当 RecordAc ...

  9. 死磕 java集合之ArrayDeque源码分析

    问题 (1)什么是双端队列? (2)ArrayDeque是怎么实现双端队列的? (3)ArrayDeque是线程安全的吗? (4)ArrayDeque是有界的吗? 简介 双端队列是一种特殊的队列,它的 ...

最新文章

  1. java中局部变量和成员变量_Java中局部变量和成员变量可以转换么?
  2. matlab 全员极大型Topsis评价代码
  3. ImportError: DLL load failed: 找不到指定的模块
  4. 自动化测试报告 html模板,PyTestReport 自动化测试报告框架
  5. 基于Javaweb的订餐管理系统的介绍和分析
  6. dmp文件查看表空间_innoDb文件
  7. 那些你不知道的程序员的多重身份
  8. 计算机网络之数据链路层:13、令牌传递协议、轮询协议-轮询访问介质访问控制
  9. Objective-C SQLiteHelper
  10. 简单理解Pix2Pix
  11. 传统企业如何选择优质的微信解决方案提供商
  12. FPGA_EP2C8T144_SCH(PDF)
  13. python匿名函数就是没有名字的函数_python 之 匿名函数
  14. C语言期末试卷华师,2020华中师大计算机考研经验帖(已上岸)
  15. 二进制和十进制的转换
  16. pink老师 JS p61课后作业
  17. 如何远程操作另一台电脑,看这里就够了,远程控制另一台电脑的操作
  18. YTU 问题 : 数组奇偶操作
  19. 《Planning Algorithm》 第三章:几何表示与变换
  20. 【Graph Embedding】LINE:算法原理,实现和应用

热门文章

  1. 数据库查询报错Error Code 1064
  2. Vysor 在电脑上控制android手机屏幕 镜像
  3. 白帽子讲web安全之 浏览器安全
  4. 800个有趣句子帮你记忆7000个单词
  5. Python3《机器学习实战》学习笔记(八):支持向量机原理篇之手撕线性SVM
  6. QImage 图像格式小结 Format_RGB32
  7. 【财富空间】华为HR总裁李杰:如何打造一支胜任的项目经理队伍?
  8. 虚实交融的元宇宙图景中社会科学的跃升
  9. Python 的 AIML
  10. DoNet学习-WebForm视频教程(30集)