当前位置: 首页 > news >正文

ArrayDeque类常用方法

数据结构

ArrayDeque类是 双端队列的线性实现类。

具有以下特征:

  • ArrayDeque是采用数组方式实现的双端队列。
  • ArrayDeque的出队入队是通过头尾指针循环,利用数组实现的。
  • ArrayDeque容量不足时是会扩容的,每次扩容容量增加一倍。
  • ArrayDeque可以直接作为栈使用。当用作栈时,性能优于Stack,当用于队列时,性能优于LinkedList。
  • 无容量大小限制,容量按需增长。
  • 非线程安全队列,无同步策略,不支持多线程安全访问。
  • 具有fail-fast特性,不能存储null值,支持双向迭代器遍历。

方法列表

类型方法类型
添加元素public void addFirst(E e)在数组前面添加元素
public void addLast(E e)在数组后面添加元素
public boolean offerFirst(E e)在数组前面添加元素,并返回是否添加成功
public boolean offerLast()在数组后面添加元素,并返回是否添加成功
删除元素public E pollFirst()删除第一个元素,并返回删除元素的值,如果元素为null,将返回null
public E removeFirst()删除第一个元素,并返回删除元素的值,如果元素为null,将抛出异常
public E pollLast()删除最后一个元素,并返回删除元素的值,如果为null,将返回null
public E removeLast()删除最后一个元素,并返回删除元素的值,如果为null,将抛出异常
public boolean removeFirstOccurrence(Object o)删除第一次出现的指定元素
public boolean removeLastOccurrence(Object o)删除最后一次出现的指定元素
获取元素public E getFirst()获取第一个元素,如果没有将抛出异常
public E getLast()获取最后一个元素,如果没有将抛出异常
队列操作public boolean add(E e)在队列尾部添加一个元素
public boolean offer(E e)在队列尾部添加一个元素,并返回是否成功
public E remove()删除队列中第一个元素,并返回该元素的值,如果元素为null,将抛出异常(其实底层调用的是removeFirst()
public E peek()获取第一个元素,如果返回null
栈操作public void push(E e)栈顶添加一个元素
public E pop()移除栈顶元素,如果栈顶没有元素将抛出异常
其他public int size()获取队列中元素个数
public boolean isEmpty()判断队列是否为空
public Iterator iterator()迭代器,从前向后迭代
public Iterator descendingIterator()迭代器,从后向前迭代
public boolean contains(Object o)判断队列中是否存在该元素
public Object[] toArray()转成数组
public T[] toArray(T[] a)转成a数组常
public void clear()清空队列
public ArrayDeque clone()克隆(复制)

当成队列用时

Deque<E> queue = new ArrayDeque<>();
queue.size()
E a=queue.addLast()
E b=queue.removeFirst()

当成栈用时

Deque<E> stack = new ArrayDeque<>();
stack.size()
E a=stack.addLast()
E b=stack.removeLast()
http://www.lryc.cn/news/57827.html

相关文章:

  • Leetcode.130 被围绕的区域
  • MySQL-四大类日志
  • 新加坡量子软件公司Horizon完成1810万美元A轮融资
  • Spring学习(四):Scope的介绍及其失效解决方案
  • 【学习集合--Set】
  • 函数的参数
  • 数组(八)-- LC[53][152] 最大子数组之和与乘积最大子数组
  • docker2-zabbix
  • ctcdecode安装
  • 虚树学习小记
  • 【C++】特殊类设计(单例模式)
  • 基于YOLOv5的水下海洋目标检测
  • 磁盘这列(Raid)
  • Oracle之PL/SQL存储过程与函数练习题(七)
  • C++入门教程||C++ 基本的输入输出||C++ 数据结构
  • 线性表——顺序表
  • 第六章 Vite4+Vue3+Vtkjs 模型颜色切换、漫反射曲面颜色
  • 【QT学习七】QTreeWidget
  • 【Linux】组管理和权限管理
  • 从零到一发布 NPM 包
  • uniapp国际化配置
  • 前端中 try-catch 捕获不到哪些异常和常见错误
  • javaEE 初阶 — 如何构造一个 HTTP 请求
  • CentOS 7下安装PostgreSQL 15版本数据库(图文详细)
  • 代码随想录算法训练营第五十一天 | 309. 最佳买卖股票时机含冷冻期、714. 买卖股票的最佳时机含手续费
  • 中英文拼写检测纠正开源项目使用入门 word-checker 1.1.0
  • 面试如果还不会Netty,看这篇文章就够了
  • 作为大学生,你还不会搭建chatGPT微应用吗?
  • Three.js教程:第一个3D场景
  • lua快速入门~在js基础上,知道Lua 和 Js 的不同即可