工具类-Queue、Deque类总结

2023-10-27

Queue类的简介

QueueJava中实现队列的接口,只有6个方法,一般只用其中3个就可以。Queue的实现类有LinkedListPriorityQueue,最常用的实现类是LinkedList

Queue类方法的使用

  • 压入元素(添加)-add(e)、offer(e)
    同:未超出容量时,从队尾压入元素,函数返回压入的元素。
    异:超出容量时,add(e)方法会抛出异常,offer(e)方法返回null

  • 弹出元素(删除):remove()、poll()
    同:容量大于0的时候,删除并返回队头被删除的元素。
    异:容量为0的时候,remove()方法会抛出异常,poll()方法返回null

  • 获取队头元素(检查-不删除):element()、peek()
    同:容量大于0的时候,都返回队头元素,但是不删除元素。
    异:容量为0的时候,element()方法会抛出异常,peek()方法返回null

public class QueueTest {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList();
        queue.offer("元素A");
        queue.offer("元素B");
        queue.offer("元素C");
        queue.offer("元素D");
        queue.offer("元素E");
        while (queue.size() > 0) {
            String element = queue.poll();
            System.out.println(element);
        }
    }
}
// 元素A
// 元素B
// 元素C
// 元素D
// 元素E

Deque类的简介

Deque是一个双端队列接口,继承Queue接口,Deque的实现类是LinkedList、ArrayDequeLinkedBlockingDeque,其中LinkedList是最常用的。

Deque有三种用途:普通队列(一端进另一端出)、双端队列(两端都可进出)、堆栈。

  • 普通队列

Queue queue = new LinkedList()Deque deque = new LinkedList()

  • 双端队列

Deque deque = new LinkedList()

  • 堆栈

Deque deque = new LinkedList()

Java官方推荐使用Deque替代Stack使用,Deque堆栈操作方法:push()、pop()、peek()未曾遇到暂时不做总结)。

Deque类方法的使用

  • 队头元素操作
抛出异常 特殊值(null或false)
添加 addFirst(e) offerFirst(e)
删除 removeFirst() pollFirst()
检查 getFirst() peekFirst()
  • 队尾元素操作
抛出异常 特殊值(null或false)
添加 addLast(e) offerLast(e)
删除 removeLast() pollLast()
检查 getLast() peekLast()

ArrayDeque类的简介

ArrayDeque不是线程安全的,ArrayDeque不可以存取null元素,因为系统根据某个位置是否为null来判断元素的存在,当作为栈使用时,性能比Stack好;当作为队列使用时,性能比LinkedList好。

ArrayDeque类方法的使用

  • ArrayDeque类方法类似于Deque类方法,这里不做介绍。

  • 其他方法:

    size()获取队列中元素个数
    isEmpty() 判断队列是否为空
    contains(Object o) 判断队列中是否存在该元素
    toArray() 转换成数组

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

工具类-Queue、Deque类总结 的相关文章

随机推荐

  • SQL 取数值小数后两位,但不四舍五入。

    例 1 67789 结果要显示为 1 67 select round 1 67789 2 1 1 67 语法 ROUND numeric expression length function 参数 numeric expression 精确
  • k8s滚动更新

    1 编写一个yaml文件 vi deployment nginx yaml apiVersion apps v1 kind Deployment metadata labels app nginx name nginx namespace
  • 22.MongoDB删除操作效率及相关问题验证

    最近遇到一个了一个MongoDB数据删除的问题 需要一次性删除上线即1 5年前 1年前的数据且之后每天清空一年过期的数据 在数据量比较大的情况下何种方式的删除效率最高是一个值得研究的问题 本文通过实际测试找出其中规律 本文采用腾讯云mong
  • PCL实现点云选取并计算选取点法向量及可视化

    1 背景及效果展示 因项目需求 基于PCL1 8 1 VS2015 实现点云特征点选取并计算选取的特点法向量 并对特征点选取过程可视化 法向量计算结果可视化 特此记录该小功能实现 随机选取几个特征点 计算选取特征点法线并可视化 2 实现步骤
  • 使用burp suite软件后开启代理后不能上网

    这篇一定要记录一下 不然忘记了太恶心了 转载网址 https blog csdn net weixin 45571987 article details 110411138
  • Shell万能工具箱脚本

    文章目录 说明 说明 使用步骤 万能工具箱 脚本结构 万能工具箱 执行效果 说明 说明 持续更新 整合业务中常用的脚本并分类触发 所有功能均基于运维企业实战Shell脚本合集 使用步骤 1 shell tools sh存放到 root sc
  • pidstat 命令详解

    pidstat 概述 pidstat是sysstat工具的一个命令 用于监控全部或指定进程的cpu 内存 线程 设备IO等系统资源的占用情况 pidstat首次运行时显示自系统启动开始的各项统计信息 之后运行pidstat将显示自上次运行该
  • python 绘制分组对比柱状图

    首先放效果图 coding utf 8 import numpy as np import tensorflow as tf from matplotlib path import Path from matplotlib patches
  • 算法notes

    算法notes1 一 位运算 本文重点讲解前移位 前三个 位运算规则 十进制 gt 二进制 符号位 正数为0 负数为1 1 无符号右移 符号位不变 低位溢出 高位用符号位 第一位都是0 无论正负 填充 没有无符号左移 2 左移 lt lt
  • MyEclipse中生成Hibernate实体类及映射文件的方法

    下午 想还有一个工程项目要做 是采用三大框架SSH完成的 以下是简单的Hibernate实体类及映射文件的方法 在MyEclipse工作区右上角选择进入MyEclipse Database Explorer透视图 在DB Browser视图
  • Axios三层封装

    Axios三层封装 在实际项目中axios都是要经过封装再使用的 企业级项目一般都是三层封装 1 工具函数层 对axios工具进行增强 如 设置公共的请求服务器 设置请求拦截器 设置响应拦截器 创建一个文件夹utils 用来放axios 创
  • 【c++】——STL容器之vector的使用和模拟实现

    目录 1 vector的概述 2 vector常用接口 2 1 构造函数 2 2 迭代器的使用 2 3 修改的接口 push back pop back insert erase find reverse 2 4 关于容量接口 resize
  • 2020-06-09

    应该或者说必须努力下去 这只是为了生存得有意义一点 现在也许可以出错 那就去试试看 至少去做过了一些事情 有一天发现自己真的应该去试试的时候 有可能又有其他原因会让你不再敢去了 或是自身的原因 或是家庭的原因 或是环境的原因 有些年纪是可以
  • 关于串口收发数据出现全零或者收发数据位不同或者数据位一样,数据不匹配的问题

    近日用串口终端通过ttl转ra232来收发嵌入式开发板的数据 打开串口终端的收发数据全为零 以为是自己开发板上数据线出现问题 经过测试 开发板完全正常 转接电路也正常 但是不管是接收还是发送数据依然出现是全零的现象 对此做如下测试 默认设置
  • C++技能系列 ( 3 ) - 详解C++泛型模版和特化模版的使用

    系列文章目录 C 技能系列 C 高性能优化编程系列 深入理解软件架构设计系列 高级C 并发线程编程 期待你的关注哦 有更多博文系列等着看哦 会经常更新 因为你的关注激励着我的创作 快乐在于态度 成功在于细节 命运在于习惯 Happiness
  • CSDN-markdown编辑器

    欢迎使用Markdown编辑器 你好 这是你第一次使用 Markdown编辑器 所展示的欢迎页 如果你想学习如何使用Markdown编辑器 可以仔细阅读这篇文章 了解一下Markdown的基本语法知识 新的改变 我们对Markdown编辑器
  • MongoDB版本升级指南

    原文 MongoDBhttp t zoukankan com realcp1018 p 15532868 html 官方文档提供了版本升级的说明 本文只介绍3 0 gt 3 2 gt 3 4 gt 3 6 gt 4 0 gt 4 2之间的升
  • Hadoop开启后jps显示只有jps

    之前在用Mapreduce写代码时 在DFS Location下的会报一个error 大体的意思就是与主机名相关的错误 然后我就觉得可能时Hadoop开启时出了错误 然后我就重启了Hadoop jps查看了一下 果然出现了错误 可见jps命
  • 有趣的数据结构算法17——哈夫曼编码及其c语言实现

    有趣的数据结构算法17 哈夫曼编码及其c语言实现 什么是哈夫曼编码 哈夫曼编码过程举例 利用c语言实现哈夫曼编码 生成哈夫曼树 生成哈夫曼编码 解码与编码 全部实现代码 GITHUB下载连接 哈夫曼编码真的好复杂噢 什么是哈夫曼编码 哈夫曼
  • 工具类-Queue、Deque类总结

    Queue Deque类总结 Queue类的简介 Queue类方法的使用 Deque类的简介 Deque类方法的使用 ArrayDeque类的简介 ArrayDeque类方法的使用 Queue类的简介 Queue是Java中实现队列的接口