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

Java基础一(队列和堆栈)

//示例
//添加新的元素
stack.push(Element e)queue.add(Element e)     //满报IllegalStateException异常
queue.offer(Element e)   //满成功true,否则false
//删除
stack.pop()queue.remove() //移除头部元素,空报异常
queue.poll()  //移除头部元素,空返回null//查看顶部元素
peek()   //获取大小
size()//其他
提供了addFirst()、addLast()、removeFirst()、removeLast()、isEmpty()等

在Java中,`Queue`接口定义了许多常用的方法用于操作队列数据结构。这些方法可以通过`LinkedList`、`ArrayDeque`等实现类来使用。以下是`Queue`接口常用的方法:

1. 添加元素:
   - `boolean add(E e)`: 将指定元素添加到队列的尾部,如果队列已满,抛出`IllegalStateException`异常。
   - `boolean offer(E e)`: 将指定元素添加到队列的尾部,如果队列已满,则返回`false`,否则返回`true`。

2. 获取队列头元素:
   - `E peek()`: 获取队列头部的元素,但不会从队列中移除它。如果队列为空,返回`null`。

3. 获取并移除队列头元素:
   - `E remove()`: 获取并移除队列头部的元素。如果队列为空,抛出`NoSuchElementException`异常。
   - `E poll()`: 获取并移除队列头部的元素。如果队列为空,返回`null`。

4. 队列大小和清空:
   - `int size()`: 返回队列中的元素个数。
   - `boolean isEmpty()`: 判断队列是否为空。
   - `void clear()`: 清空队列中的所有元素。

需要注意的是,`Queue`接口是一个继承自`Collection`接口的子接口,因此它还继承了`Collection`接口中的一些方法,如`contains()`、`toArray()`等。

在使用具体的`Queue`实现类时,例如`LinkedList`或`ArrayDeque`,还可以使用它们自己的特定方法。例如,`LinkedList`提供了`addFirst()`和`addLast()`方法,而`ArrayDeque`提供了`addFirst()`、`addLast()`、`removeFirst()`、`removeLast()`等方法,用于模拟双端队列(deque)的行为。

总结:`Queue`提供了一组用于添加、获取和移除元素的方法,支持FIFO(先进先出)的数据结构操作。具体使用哪些方法取决于需求,有时候可能还需要考虑使用`Deque`接口以支持更多的操作。

在Java中,`Stack`类表示堆栈数据结构,并提供了一组常用的方法用于操作堆栈。`Stack`类继承自`Vector`类,但由于`Vector`类在Java中已经过时,推荐使用`Deque`接口的实现类(例如`LinkedList`)来代替`Stack`类。以下是`Stack`类常用的方法:

1. 添加元素:
   - `E push(E item)`: 将指定元素压入堆栈顶部,相当于将元素添加到堆栈的顶部。

2. 获取堆栈顶元素:
   - `E peek()`: 获取堆栈顶部的元素,但不会从堆栈中移除它。

3. 获取并移除堆栈顶元素:
   - `E pop()`: 获取并移除堆栈顶部的元素。

4. 判断堆栈是否为空:
   - `boolean empty()`: 判断堆栈是否为空。如果堆栈为空,返回`true`,否则返回`false`。

5. 获取堆栈中的元素个数:
   - `int size()`: 返回堆栈中的元素个数。

需要注意的是,由于`Stack`类继承自`Vector`类,它的一些方法也可以用于堆栈的操作,例如:
- `add(E e)`: 将指定元素添加到堆栈顶部,相当于使用`push(E item)`方法。
- `remove(int index)`: 移除指定索引处的元素,相当于使用`pop()`方法。
- `elementAt(int index)`: 获取指定索引处的元素,相当于使用`peek()`方法。

然而,为了更好地与现代Java集合框架兼容,推荐使用`Deque`接口(双端队列)的实现类,例如`LinkedList`,以实现堆栈的功能。使用`Deque`接口可以直接使用`addFirst()`、`removeFirst()`、`peekFirst()`等方法,更符合常见的堆栈操作方式。

总结:`Stack`类提供了一组用于模拟堆栈行为的方法,但由于继承自过时的`Vector`类,推荐使用`Deque`接口的实现类(例如`LinkedList`)来实现堆栈的功能,以获得更好的性能和兼容性。

http://www.lryc.cn/news/104759.html

相关文章:

  • 使用ansible playbook编写lnmp架构
  • 使用 TorchText 进行语言翻译
  • SpringBoot整合SSMP小demo
  • 51单片机--红外遥控
  • 【图像分类】CNN+Transformer结合系列.2
  • 用于毫米波天线的新型无卤素超低传输损耗多层电路板R-5410
  • java数据算法-汉诺塔
  • [QT编程系列-35]:数据存储 - JSON格式配置数据的存储与通知
  • 【Spring】Spring 中事务的实现
  • Linux 学习记录60(ARM篇)
  • 尚硅谷大数据项目《在线教育之采集系统》笔记002
  • 校园跑腿小程序功能分享
  • PHP8的变量-PHP8知识详解
  • 图解TCP 三次握手和四次挥手的高频面试题(2023最新版)
  • 【mysql】Win10安装配置MySQL8.0简要
  • SQL SERVER使用发布订阅同步数据库遇到的坑
  • 3个命令定位CPU飙高
  • Java版知识付费 Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建
  • 使用多数据源dynamic-datasource-spring-boot-starter遇到的问题记录
  • 构建语言模型:BERT 分步实施指南
  • ⛳ Java多线程 一,线程基础
  • 【iOS】多线程 锁问题总结
  • Pytorch深度学习-----神经网络之池化层用法详解及其最大池化的使用
  • Docker啥是数据持久化?
  • CGAL 线段简化算法(2D)
  • 在CentOS 7上挂载硬盘到系统的步骤及操作
  • 螺旋矩阵(JS)
  • C#常用数学插值法
  • ELK日志管理平台架构和使用说明
  • 抖音短视频seo矩阵系统源码开发部署技术分享