零基础学Java第二十二天之迭代器 Iterator
迭代器 Iterator 的理解和相关集合 使用
1、理解
迭代器(Iterator)是设计模式中的一种,它允许程序员遍历容器(例如列表、集合等)中的元素,而无需了解容器底层的实现细节。在编程中,迭代器提供了一种方法来访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。
2、特点
- 顺序访问:迭代器通常按照某种顺序(如插入顺序或排序顺序)访问容器中的元素。
- 一次访问一个元素:迭代器在给定时刻只指向容器中的一个元素。
- 状态保存:迭代器保存了遍历容器时的状态,使得在迭代过程中可以记住当前的位置。
- 不修改容器:迭代器通常不修改容器本身,只用于访问元素。
3、使用
1、foreach迭代器(增强for循环)
package com.xx.iterator01;import java.util.ArrayList;public class Test01 {/***深入迭代器 -- foreach*/public static void main(String[] args) {// 创建一个ArrayList集合并添加一些元素ArrayList<String> list = new ArrayList<>();//往集合里面添加元素list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");//foreach循环// 它声明了一个变量element(类型为String),该变量将在每次迭代中存储list中的下一个元素。list是外部定义的,并假定为包含String元素的某种集合(最常见的是List<String>)。for (String element : list) {System.out.println(element);}/*** 使用foreach循环遍历集合的底层实现:Iterator<String> it = list.iterator(); // 获取迭代器 String element; //当他有下一个元素时while (it.hasNext()) { // 使用while循环模拟for-each循环 element = it.next(); // 获取下一个元素 System.out.println(element); // 打印元素 }*/}
}
2、Iterator遍历元素
package com.xx.iterator01;import java.util.ArrayList;
import java.util.Iterator;public class Test02 {/*** 深入迭代器 -- Iterator* * 深入:Iterator如何遍历元素*/public static void main(String[] args) {// 创建一个ArrayList集合并添加一些元素ArrayList<String> list = new ArrayList<>();//添加元素list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");//移除元素list.remove("bbb");//获取迭代器Iterator<String> it = list.iterator();//当有下一个元素时,继续循环打印while(it.hasNext()){String element = it.next();System.out.println(element);}}
}
3、使用Iterator遍历元素,遍历到"bbb"时删除该元素
package com.xx.iterator01;import java.util.ArrayList;
import java.util.Iterator;public class Test02 {/*** 知识点:深入迭代器 -- Iterator* * 深入:Iterator如何遍历元素*/public static void main(String[] args) {// 创建一个ArrayList集合并添加一些元素ArrayList<String> list = new ArrayList<>();//添加元素list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");//移除元素list.remove("bbb");//获取迭代器Iterator<String> it = list.iterator();//当有下一个元素时,继续循环打印while(it.hasNext()){ String element = it.next();//如果元素等于bbb,则删除if(element.equals("bbb")){//list.remove(element);/it.remove();}//开始遍历for (String element : list) {System.out.println(element);}}}
}
4、使用ListIterator遍历元素
package com.xx.iterator01;import java.util.ArrayList;
import java.util.ListIterator;public class Test04 {/*** 深入迭代器 -- ListIterator* * 需求:使用ListIterator遍历元素*/public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");ListIterator<String> listIterator = list.listIterator();while(listIterator.hasNext()){String element = listIterator.next();System.out.println(element);}}
}
5、使用ListIterator遍历元素,遍历到"bbb"时删除
package com.xx.iterator01;import java.util.ArrayList;
import java.util.ListIterator;public class Test05 {/*** 深入迭代器 -- ListIterator* * 需求:使用ListIterator遍历元素,遍历到"bbb"时删除*/public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");ListIterator<String> listIterator = list.listIterator();//当下一个位置有元素时,继续循环while(listIterator.hasNext()){//将下一个位置的元素,赋值给elelmentString element = listIterator.next();//如果元素输入为bbb,删除bbbif(element.equals("bbb")){listIterator.remove();}}//开始遍历集合for (String element : list) {System.out.println(element);}}
}
6、使用ListIterator遍历元素,遍历到"bbb"时添加"xyz"
package com.xx.iterator01;import java.util.ArrayList;
import java.util.ListIterator;public class Test06 {/*** 深入迭代器 -- ListIterator* * 需求:使用ListIterator遍历元素,遍历到"bbb"时添加"xyz"*/public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");ListIterator<String> listIterator = list.listIterator();while(listIterator.hasNext()){String element = listIterator.next();//当元素为bbb时,添加xyzif(element.equals("bbb")){listIterator.add("xyz");}}//遍历集合for (String element : list) {System.out.println(element);}}
}
7、使用ListIterator遍历元素,遍历到"bbb"时替换成"xyz"
package com.xx.iterator01;import java.util.ArrayList;
import java.util.ListIterator;public class Test07 {/*** 深入迭代器 -- ListIterator* * 需求:使用ListIterator遍历元素,遍历到"bbb"时替换成"xyz"*/public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");ListIterator<String> listIterator = list.listIterator();while(listIterator.hasNext()){String element = listIterator.next();//当元素为bbb时,设置bbb替换成xyzif(element.equals("bbb")){listIterator.set("xyz");}}//遍历集合for (String element : list) {System.out.println(element);}}
}
8、使用ListIterator指定下标遍历元素
package com.xx.iterator01;import java.util.ArrayList;
import java.util.ListIterator;public class Test08 {/*** 深入迭代器 -- ListIterator* * 需求:使用ListIterator指定下标遍历元素*/public static void main(String[] args) {//新建一个集合ArrayList<String> list = new ArrayList<>();//添加元素list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");//获取迭代器,从下标为1的开始ListIterator<String> listIterator = list.listIterator(1);while(listIterator.hasNext()){String element = listIterator.next();System.out.println(element);}}
}
9、使用ListIterator倒序遍历元素
package com.qf.iterator01;import java.util.ArrayList;
import java.util.ListIterator;public class Test09 {/*** 深入迭代器 -- ListIterator* * 需求:使用ListIterator倒序遍历元素*/public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");//获取一个迭代器,从集合末尾开始ListIterator<String> listIterator = list.listIterator(list.size());//当迭代器中,前一个位置有元素时,继续循环while(listIterator.hasPrevious()){//将前一个元素赋值给elementString element = listIterator.previous();System.out.println(element);}}
}相关文章:
零基础学Java第二十二天之迭代器 Iterator
迭代器 Iterator 的理解和相关集合 使用 1、理解 迭代器(Iterator)是设计模式中的一种,它允许程序员遍历容器(例如列表、集合等)中的元素,而无需了解容器底层的实现细节。在编程中,迭代器提供了…...
微服务架构-异步消息传递设计模式
微服务架构-异步消息传递设计模式 异步消息允许服务发送消息后立即返回,而不需要等待消息被处理完毕,这种异步方式可以大大提高系统的处理速度、和吞吐量。 微服务架构,通常涉及多个服务之间的相互调用,如果通信只是在少数几个微…...
基于SSM的大学生兼职管理系统
基于SSM的大学生兼职管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 登录界面 企业界面 前台学生界面 管理员界面 摘要 随着大学生兼职市场的日益繁…...
leetcode刷题记录:前缀和
https://labuladong.online/algo/problem-set/perfix-sum/#%E8%A7%A3%E6%B3%95%E4%BB%A3%E7%A0%81-3 适用范围:快速、频繁地计算一个索引区间内的元素之和 303 区域和检索:数组不可变 https://leetcode.cn/problems/range-sum-query-immutable/ class …...
TENT: FULLY TEST-TIME ADAPTATION BY ENTROPY MINIMIZATION--论文笔记
论文笔记 资料 1.代码地址 https://github.com/DequanWang/tent 2.论文地址 https://arxiv.org/abs/2006.10726 1论文摘要的翻译 在这种完全测试时适应的情况下,模型只有测试数据和自身参数。我们建议通过测试熵最小化(tent)进行适应&…...
Java期末复习指南(1):知识点总结+思维导图,考试速成!
🔖面向对象 📖 Java作为面向对象的编程语言,我们首先必须要了解类和对象的概念,本章的所有内容和知识都是围绕类和对象展开的! ▐ 思维导图1 ▐ 类和对象的概念 • 简单来说,类就是对具有相同特征的一类事…...
OpenMV学习笔记1——IDE安装与起步
目录 一、OpenMV IDE下载 二、OpenMV界面 三、Hello World! 四、将代码烧录到OpenMV实现脱机运行 五、插SD卡(为什么买的时候没送?) 一、OpenMV IDE下载 浏览器搜索OpenMV官网,进入后点击“立即下载”࿰…...
C++设计模式|结构型 适配器模式
1.什么是适配器模式? 可以将⼀个类的接⼝转换成客户希望的另⼀个接⼝,主要⽬的是 充当两个不同接⼝之间的桥梁,使得原本接⼝不兼容的类能够⼀起⼯作。 2. 适配器模式的组成 (1)接口类,给客户端调用&…...
视频码流分析工具
一、VQ Analyzer 在线使用说明: https://vicuesoft.com/vq-analyzer/userguide/ ref: Video Analyzer and Streaming Tester Software – VQ Analyzer HEVC 分析工具 - 懒人李冰 推荐一个开源且跨平台的免费码流分析软件YUView - 知乎...
记一次重定向问题(浏览器安全)解决
近期做单点登陆功能,本身应该是一个很简单的功能,却发生了意向不到的问题…让我们看下: 首先第三方给出的地址需要通过JWT框架获取token拼接后跳转,我这边为了方便首选肯定是考虑用response.sendRedirect(url),但是做好…...
【传知代码】transformer-论文复现
文章目录 概述原理介绍模型架构 核心逻辑嵌入表示层注意力层前馈层残差连接和层归一化编码器和解码器结构 数据处理和模型训练环境配置小结 本文涉及的源码可从transforme该文章下方附件获取 概述 Transformer模型是由谷歌在2017年提出并首先应用于机器翻译的神经网络模型结构…...
大模型日报|今日必读的 13 篇大模型论文
大家好,今日必读的大模型论文来啦! 1.MIT新研究:并非所有语言模型特征都是线性的 最近的研究提出了线性表征假说:语言模型通过操作激活空间中概念(“特征”)的一维表征来执行计算。与此相反,来…...
Python 魂斗罗的音效和动漫效果
一、实现游戏音效 音效是游戏中不可或缺的一部分,它可以为游戏增添氛围和趣味性。在 Pygame 中,我们可以使用 pygame.mixer 模块来播放音效。下面是一个简单的示例代码,演示如何在游戏中播放音效: import pygamepygame.mixer.init…...
Raylib 绘制自定义字体的一种套路
Raylib 绘制自定义字体是真的难搞。我的需求是程序可以加载多种自定义字体,英文中文的都有。 我调试了很久成功了! 很有用的参考,建议先看一遍: 瞿华:raylib绘制中文内容 个人笔记|Raylib 的字体使用 - …...
C++学习笔记(21)——继承
目录 1. 继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 继承的概念总结: 2. 基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数知识点:派生类中6个默认成员函数…...
DOS学习-目录与文件应用操作经典案例-more
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 DOS系统的more命令是一个用于查看文本文件内容的工具。…...
android 在 Activity 的 onCreate 中获取View 的宽高
view 的 post 执行时,首先会判断view 的 mAttatchInfo 是否为空,如果不为空,则将Runnable 添加到mAttachInfo.handler 的 UI线程MessageQueue 中;如果为空,则先将Runnable 暂存在view 的类为HandlerActionQueue的mRunQ…...
Pod进阶——资源限制以及探针检查
目录 一、资源限制 1、资源限制定义: 2、资源限制request和limit资源约束 3、Pod和容器的资源请求和限制 4、官方文档示例 5、CPU资源单位 6、内存资源单位 7、资源限制实例 ①编写yaml资源配置清单 ②释放内存(node节点,以node01为…...
XSS---DOM破坏
文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.什么是DOM破坏 在HTML中,如果使用一些特定的属性名(如id或name)给DOM元素命名,这些属性会在全局作用域中创建同名的全局变量,指向对…...
2024电工杯数学建模B 题:大学生平衡膳食食谱的优化设计
背景: 大学时代是学知识长身体的重要阶段, 同时也是良好饮食习惯形成的重要时期。这一特 定年龄段的年轻人, 不仅身体发育需要有充足的能量和各种营养素, 而且繁重的脑力劳动和 较大量的体育锻炼也需要消耗大量的能源物质。 大学生…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
