当前位置: 首页 > 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`)来实现堆栈的功能,以获得更好的性能和兼容性。

相关文章:

Java基础一(队列和堆栈)

//示例 //添加新的元素 stack.push(Element e)queue.add(Element e) //满报IllegalStateException异常 queue.offer(Element e) //满成功true,否则false //删除 stack.pop()queue.remove() //移除头部元素,空报异常 queue.poll() //移除头部元素&…...

使用ansible playbook编写lnmp架构

使用ansible playbook编写lnmp架构 - name: nginx playgather_facts: falsehosts: lnmpremote_user: roottasks: - name: stop firewalldservice: namefirewalld statestopped- name: syslinuxcommand: /usr/sbin/setenforce 0ignore_errors: true- name: nginx.repocopy: src/…...

使用 TorchText 进行语言翻译

使用 TorchText 进行语言翻译 本教程说明如何使用torchtext的几个便捷类来预处理包含英语和德语句子的著名数据集的数据,并使用它来训练序列到序列模型,并注意将德语句子翻译成英语 。 它基于 PyTorch 社区成员 Ben Trevett 的本教程,并由 …...

SpringBoot整合SSMP小demo

创建项目 spring web,mybatis,mysql勾选 加入mp和druid,依赖见SpringBoot基础认识_阳光明媚UPUP的博客-CSDN博客 yml数据源 server:port: 81 spring:datasource:druid: #整合方式配置driver-class-name: com.mysql.jdbc.Driverurl: jdbc:m…...

51单片机--红外遥控

文章目录 红外遥控的介绍硬件电路NEC编码外部中断红外遥控实例代码 红外遥控的介绍 红外遥控是一种无线、非接触控制技术,通过使用红外线来传送控制信号。它具有抗干扰能力强、信息传输可靠、功耗低、成本低、易实现等显著优点,因此被广泛应用于各种电子…...

【图像分类】CNN+Transformer结合系列.2

介绍几篇利用CNNTransformer实现图像分类的论文:CMT(CVPR2022),MaxViT(ECCV2022),MaxViT(ECCV2022),MPViT(CVPR2022)。主要是说明Transformer的局限性&#x…...

用于毫米波天线的新型无卤素超低传输损耗多层电路板R-5410

3月3日消息,松下公司宣布,其工业解决方案公司已经实现了R-5410的商业化,这是一种无卤素、超低传输损耗的多层电路板(MLCB)材料,适用于毫米波天线。将于2021年3月开始量产。 毫米波雷达是汽车、通信等行业的…...

java数据算法-汉诺塔

1、有三根相邻的柱子,标号为A,B,C。 2、A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘。 3、现在把所有盘子一个一个移动到柱子C上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方。 题解步骤 1、当n1时; 将1号从A移动到C即…...

[QT编程系列-35]:数据存储 - JSON格式配置数据的存储与通知

目录 1. QJsonObject 2 QJsonDocument 3 JSON本文格式 4. JSON示例 5. JASON配置文件示例 1. QJsonObject QJsonObject 是Qt的类之一,用于表示 JSON 对象。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式&#xff0…...

【Spring】Spring 中事务的实现

目录 1.编程式事务(手动编写代码)2.声明式事务(利用注解)2.1 Transactional作用范围2.2 Transactional参数说明2.3 Transactional工作原理 3.Spring 中设置事务隔离级别3.1 事务四大特性ACID3.2 事务的隔离级别3.2 Spring中设置事…...

Linux 学习记录60(ARM篇)

Linux 学习记录60(ARM篇) 本文目录 Linux 学习记录60(ARM篇)一、SPI总线1. 概念2. 硬件连接 二、SPI总线协议三、SPI总线通信模式四、对比IIC总线和SPI总线1. 相同点2. 不同点 思维导图 一、SPI总线 1. 概念 1、SPI总结是Motorola首先提出的全双工三线/四线同步串行总线 2、采…...

尚硅谷大数据项目《在线教育之采集系统》笔记002

视频地址:尚硅谷大数据项目《在线教育之采集系统》_哔哩哔哩_bilibili 目录 P032 P033 P033 P034 P035 P036 P032 P033 # 1、定义组件,为各组件命名 a1.sources r1 a1.channels c1 a1.sinks - k1# 2、配置sources,描述source a1.sour…...

校园跑腿小程序功能分享

提起校园跑腿小程序大家都不陌生,尤其是对上大学的伙伴们来说,更是熟悉得不能再熟悉了,和我们的生活息息相关,密不可分。 对于现在的年轻人来说,网购是非常简单和方便的一种购物方式,随之快递也会越来越多。在我们国家…...

PHP8的变量-PHP8知识详解

昨天我们讲解了PHP8的常量,今天讲解PHP8的变量。常量有定义常量和预定义常量,变量呢?那就没有定义变量了,那叫给变量赋值,但是还是有预定义变量的。下面就给大家讲解什么是变量、变量赋值及使用及预定义变量。 一、什么…...

图解TCP 三次握手和四次挥手的高频面试题(2023最新版)

大家好,最近重新整理了一版 TCP 三次握手和四次挥手的面试题(2023最新版)。 ----- 任 TCP 虐我千百遍,我仍待 TCP 如初恋。 巨巨巨巨长的提纲,发车!发车! img TCP 基本认识 TCP 头格式有哪些…...

【mysql】Win10安装配置MySQL8.0简要

下载 MySQL官网下载安装包 安装...

SQL SERVER使用发布订阅同步数据库遇到的坑

可能遇到的各种坑 1.在执行 xp_cmdshell 的过程中出错。调用 ‘CreateProcess’ 失败,错误代码: ‘5’ 网上有各种解决办法,包括改本地安全策略,将sql server服务的网络权限改为本机系统,改cmd用户的读写权限,退出360…...

3个命令定位CPU飙高

top 指令找出消耗CPU最厉害的那个进程的pid top -H -p 进程pid 找出耗用CPU资源最多的线程pid printf ‘0x%x\n’ 线程pid 将线程pid转换为16进制 结合jstack 找出哪个代码有问题 jstack 进程pid | grep 16进制的线程pid -A 多少行日志 jstack 进程pid | grep 16进制的线程…...

Java版知识付费 Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建

提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含:录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署,免费售后,专业技术指导,支持PC、APP、H5、小程序多终端同步,支持二次开发…...

使用多数据源dynamic-datasource-spring-boot-starter遇到的问题记录

记录使用多数据源dynamic-datasource-spring-boot-starter遇到的问题&#xff1a; 1、工程启动失败 缺少clickhouse连接驱动&#xff0c;引入对应的maven依赖 <!--ck连接驱动--><dependency><groupId>ru.yandex.clickhouse</groupId><artifactId>…...

python-flask-djangol框架的关爱空巢老人和孩子留守儿童管理系统的设计和实现

目录需求分析与规划技术选型核心模块设计数据安全与权限开发与测试计划社区与可持续性项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作需求分析与规划 明确系统核心功能模块&#xff1a;空巢老人健康监测、留守儿童学习与心理辅…...

FanControl深度应用指南:从噪音溯源到智能散热系统搭建

FanControl深度应用指南&#xff1a;从噪音溯源到智能散热系统搭建 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/f…...

Vivado仿真踩坑实录:PR模式不支持仿真的快速解决方案(附详细步骤)

Vivado仿真避坑指南&#xff1a;PR模式不支持仿真的深度解析与实战方案 刚接触FPGA开发的朋友们&#xff0c;不知道你们是否遇到过这样的场景&#xff1a;在Vivado中精心设计了一个工程&#xff0c;准备进行仿真验证时&#xff0c;突然弹出一个令人困惑的错误提示——"Sim…...

从智慧灯杆到无人驾驶:如何用Raspberry Pi 4和Arduino搭建微型智慧城市实验平台

从智慧灯杆到无人驾驶&#xff1a;如何用Raspberry Pi 4和Arduino搭建微型智慧城市实验平台 在创客文化和高校工程教育中&#xff0c;低成本硬件的创新应用正掀起一场微型智慧城市实验的革命。只需一块树莓派主板、几个传感器和开源软件&#xff0c;就能在桌面上复现价值数百万…...

终极风扇控制指南:如何用FanControl 264版彻底告别电脑噪音烦恼

终极风扇控制指南&#xff1a;如何用FanControl 264版彻底告别电脑噪音烦恼 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tr…...

VSCode配置STM32标准库开发环境:手把手解决core_cm3.c编译报错与头文件路径问题

VSCode搭建STM32开发环境&#xff1a;解决标准库兼容性与智能感知难题 当开发者从Keil或IAR转向VSCode时&#xff0c;往往会遇到两个棘手的拦路虎&#xff1a;标准库与GCC的兼容性问题&#xff0c;以及代码智能感知的缺失。本文将深入解决这两个核心痛点&#xff0c;带你构建一…...

用了Qoder写代码飞快,联调时却总因字段不一致返工,问题出在哪?

发版前夜&#xff0c;前端字段对不上后端接口&#xff0c;联调卡了整晚。这种场景在 AI Coding 普及后并不罕见&#xff0c;不少团队用了 Qoder 觉得生成快、跑通快&#xff0c;可一旦要改需求&#xff0c;系统就僵住了。看似工具背锅&#xff0c;其实根子往往不在速度&#xf…...

OpenClaw多任务调度:GLM-4.7-Flash并行处理文件与邮件

OpenClaw多任务调度&#xff1a;GLM-4.7-Flash并行处理文件与邮件 1. 为什么需要多任务调度 上周我需要同时处理两个紧急任务&#xff1a;整理三个月积累的会议录音文字稿&#xff0c;以及给二十多位合作伙伴发送定制化跟进邮件。手动操作需要至少6小时&#xff0c;而第二天早…...

HUNYUAN-MT模型安全加固:防止API滥用与恶意攻击

HUNYUAN-MT模型安全加固&#xff1a;防止API滥用与恶意攻击 最近在帮一个朋友的公司部署他们自研的HUNYUAN-MT翻译模型API&#xff0c;准备对外开放给合作伙伴使用。本来以为就是搭个服务、配个密钥的事儿&#xff0c;结果聊下来才发现&#xff0c;他们最担心的不是模型翻译得…...

vLLM-v0.17.1实操手册:vLLM服务升级策略与滚动更新最佳实践

vLLM-v0.17.1实操手册&#xff1a;vLLM服务升级策略与滚动更新最佳实践 1. vLLM框架概述 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库&#xff0c;最新发布的v0.17.1版本带来了多项性能优化和功能增强。这个开源项目最初由加州大学伯克利分校的研究团队开发&am…...