Java[list/set]通用遍历方法之Iterator
需求:输入一个字符串 将其拆解成单个汉字 然后一行一个输出 这里要求使用到Arraylist集合实现方法+Itrator遍历的原理
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;public class Main{public static void main(String[] args){String str = "我希望你可以好好生活";Collection<String> Astr = new ArrayList<>();for(int i=0;i<str.length(); i++){Astr.add(str.substring(i,i+1));}Iterator<String> it = Astr.iterator();while(it.hasNext()){System.out.println(it.next());}}
}
//原始for遍历是用索引来进行遍历 但是现在我们的set集合里面是没有索引的 //所以原先的普通for遍历只能在list遍历中进行//以下的三种遍历方法可以在list和set两种类型中去使用 //————————————————————————————————————————————————————————————
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;public class Main{public static void main(String[] args){//原始for遍历是用索引来进行遍历 但是现在我们的set集合里面是没有索引的//所以原先的普通for遍历只能在list遍历中进行//以下的三种遍历方法可以在list和set两种类型中去使用//————————————————————————————————————————————————————————————//迭代器遍历:不依赖索引 在Java中的类 叫做Iterator 默认指向集合的0索引/**/String str = "这是一个迭代器案例分析语句";Collection<String> strc = new ArrayList<>();for(int i=0;i<str.length();i++){strc.add(str.substring(i,i+1));}Iterator<String> it = strc.iterator();//获取的迭代器指向零索引boolean flag = it.hasNext();//判断是否还有下个元素while(it.hasNext()){ //只要还有下一个元素 it.hasNext()判断为true 则while成立String istr = it.next();//指针指向某个元素并且暂时存储某个字符System.out.println(istr);//打印我们刚刚指向的这个字符}//现在我们正式来做一个迭代器的例子://1.创建集合并且添加元素Collection<String> coll = new ArrayList<>();coll.add("aaa");coll.add("bbb");coll.add("ccc");coll.add("ddd");//2.获取迭代器对象 迭代器好像一个箭头 默认指向集合的0索引处Iterator<String> It = coll.iterator();//右边很好理解,也就是coll这个类去调用Iterator的方法//3.我们利用循环去不断地获取集合中的每一个元素while(It.hasNext()){//这个不要理解为下一个元素 不要见名知意 本质上就是判断指针指向的当前元素//4.next方法的两件事情 获取元素并且移动指针String Str = it.next();System.out.println(str);}System.out.println(it.next());//这一句话就可以看到异常了 为什么?因为已经指向一个没有内容的集合序列区域了System.out.println(it.hasNext());//说明迭代器完成迭代后指针不会复位//如果我们希望继续第二次遍历结合 我们需要创建一个新的迭代器对象Iterator<String> it2 = coll.iterator();while(it2.hasNext()){ //注意:有一次hasNext 就只能有一次next方法 不然可能会报错String str2 = it.next();System.out.println(str);}//4.一些异常分析/*NoSuchElementException 说明我的指针指向了迭代器的最末端 不会复位的 比如"aaa" "bbb" "ccc" "ddd" 的序列依次是 0 1 2 3我产生这个异常通常是因为迭代器指针指向了4序列 这个序列上是不存在集合元素 因此会报错同时 我们需要知道 这个指针就只能放在原处了 它不会被移动 如果我们希望重新利用迭代器遍历一次这个集合 需要重新创建一个迭代器 如1.方法在循环当中 next方法只可以使用一次 但是你可以灵活地用变量来储存迭代器遍历的时候 不可以用集合的方法进行增加/删除(很重要的结论) 报错是ConcurrentModificationException!不过你虽然不能用coll.remove 但是你可以用it.remove 说白了就是在迭代器类型当中需要用迭代器来进行删除 而不是集合*///————————————————————————————————————————————————————————————//增强for遍历//Lambda遍历}
}
相关文章:
Java[list/set]通用遍历方法之Iterator
需求:输入一个字符串 将其拆解成单个汉字 然后一行一个输出 这里要求使用到Arraylist集合实现方法Itrator遍历的原理import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;public class Main{public static void main(String[] arg…...
ubuntu/vscode下的c/c++开发之-CMake语法与练习
Cmake学习 1 语法特性介绍 基本语法格式:指令(参数 1 参数 2...) 参数使用括弧括起参数之间使用空格或分号分开 指令是大小写无关的,参数和变量是大小写相关的 set(HELLO hello.cpp) add_executable(hello main.cpp hello.cpp) ADD_EXECUTABLE(hello ma…...
Java(119):ExcelUtil工具类(org.apache.poi读取和写入Excel)
ExcelUtil工具类(XSSFWorkbook读取和写入Excel),入参和出参都是:List<Map<String,Object>> 一、读取Excel testdata.xlsx 1、new XSSFWorkbook对象 File file = new File(filePath); FileInputStream fis = new FileInputStream(file);…...
Kong处理web服务跨域
前言 好久没写文章了,大概有半年多了,这半年故事太多,本文写不下,就写写文章标题问题! 问题描述 关于跨域的本质问题我这里不过多介绍,详细请看历史文章 跨域产生的原因以及常见的解决方案。 我这边是新…...
Kotlin学习——kt里的作用域函数scope function,let,run,with,apply,also
Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作,并提供了多种方式在多个平台间复用代码,以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…...
informer辅助笔记:utils/timefeatures.py
定义了一套与时间特征相关的类和函数,旨在从时间序列数据中提取有用的时间特征,以支持各种时间序列分析和预测任务 from typing import Listimport numpy as np import pandas as pd from pandas.tseries import offsets from pandas.tseries.frequenc…...
[Verilog语法]:===和!==运算符使用注意事项
[Verilog语法]:和!运算符使用注意事项 1, 和 !运算符使用注意事项2,3, 1, 和 !运算符使用注意事项 参考文献: 1,[SystemVerilog语法拾遗] 和!运算符使用注意事项 2, 3,...
mybatis 高并发查询性能问题
场景: 使用Mybatis (3.5.10)SelectProvider注解执行动态sql 在高并发查询时 QPS 很低 问题复现 mybatis 配置 (getOfflineConfigSqlTemplate 该方法返回的是动态sql ) 压测结果 观察线程阻塞情况 此时的QPS 在 …...
我在Vscode学OpenCV 图像处理一(阈值处理、形态学操作【连通性,腐蚀和膨胀,开闭运算,礼帽和黑帽,内核】)
文章目录 一、阈值处理1.1 OpenCV 提供了函数 cv2.threshold()和函数 cv2.adaptiveThreshold(),用于实现阈值处理1.1.1. cv2.threshold():(1)在函数cv2.threshold()中,参数threshold_type用于指定阈值处理的方式。它有以下几种可选的阈值类型…...
Yolov8实现瓶盖正反面检测
一、模型介绍 模型基于 yolov8n数据集采用SKU-110k,这数据集太大了十几个 G,所以只训练了 10 轮左右就拿来微调了 基于原木数据微调:训练 200 轮的效果 10 轮SKU-110k 20 轮原木 200 轮瓶盖正反面 微调模型下载地址https://wwxd.lanzouu.co…...
GAN:WGAN前作
WGAN前作:有原则的方法来训练GANs 论文:https://arxiv.org/abs/1701.04862 发表:ICLR 2017 本文是wgan三部曲的第一部。文中并没有引入新的算法,而是标是朝着完全理解生成对抗网络的训练动态过程迈进理论性的一步。 文中基本是…...
数据库应用:MongoDB 文档与索引管理
目录 一、理论 1.MongoDB文档管理 2.MongoDB索引管理 二、实验 1.MongoDB文档管理 2.MongoDB索引管理(索引添加与删除) 3.MongoDB索引管理(全文索引) 4.MongoDB索引管理(多列索引) 5.MongoDB索引管…...
Python批处理PDF文件,PDF附件轻松批量提取
PDF附件是指在PDF文档中嵌入的其他文件,如图像、表格、音频、视频或其他文档。这些附件可以与PDF文档一起存储、传输和共享,为文档提供了更丰富的内容和更多的功能。通过添加附件,我们可以将相关文件和信息捆绑在一起,使其更易于管…...
Python可迭代对象排序:深入排序算法与定制排序
更多Python学习内容:ipengtao.com 排序在计算机科学中是一项基础而关键的操作,而Python提供了强大的排序工具来满足不同场景下的排序需求。本文将深入探讨Python中对可迭代对象进行排序的方法,涵盖基础排序算法、sorted函数的应用、以及定制排…...
基于matlab的图像去噪算法设计与实现
摘 要 随着我们生活水平的提高,科技产品飞速更新换代,在信息传输中,图像传输所占的比重越来越大。但自然噪声会在图像传输时干扰其传输过程,甚至会使图片不能表达其原来的意义。去噪处理就是为了去除图像中的噪声,从而…...
NFTScan 正式上线 Starknet NFTScan 浏览器和 NFT API 数据服务
2023 年 11 月 30 号,NFTScan 团队正式对外发布了 Starknet NFTScan 浏览器,将为 Starknet 生态的 NFT 开发者和用户提供简洁高效的 NFT 数据搜索查询服务。NFTScan 作为全球领先的 NFT 数据基础设施服务商,Starknet 是继 Bitcoin、Ethereum、…...
2023年亚太杯APMCM数学建模大赛A题水果采摘机器人的图像识别
2023年亚太杯APMCM数学建模大赛 A题 水果采摘机器人的图像识别 原题再现 中国是世界上最大的苹果生产国,年产量约3500万吨。同时,中国也是世界上最大的苹果出口国,世界上每两个苹果中就有一个是中国出口的,世界上超过六分之一的…...
mysql which is not in SELECT list; this is incompatible with DISTINCT解决方案
mysql报错Expression #1 of ORDER BY clause is not in SELECT list, references column ‘xxx’ which is not in SELECT list; this is incompatible with DISTINCT解决方案: 这是在 mysql5.7 版本,DISTINCT 与 order by 在一起用时则会报3065错误。因…...
linux /proc 文件系统
/proc系统是一个伪文件系统,它只存在内存当中,而不占用外存空间,以文件系统的方式为内核与进程提供通信的接口。 /proc目录下有很多以数字命名的目录,每个数字代表进程号PID它们是进程目录。系统中当前运行的每一个进程在/proc下都…...
java开发之个微群聊自动添加好友
请求URL: http://域名/addRoomMemberFriend 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wId是String登录实例标识chatRoom…...
Livox Mid360激光雷达动态避障实战:DWA算法在移动机器人中的应用
1. Livox Mid360激光雷达与DWA算法初探 第一次接触Livox Mid360这款固态激光雷达时,我就被它的性能惊艳到了。相比传统机械式雷达,Mid360不仅体积小巧,而且扫描频率高达100Hz,特别适合用在移动机器人上做实时避障。记得去年给一个…...
RIFE智能帧插值技术全解析:从原理到实战的视频流畅度提升指南
RIFE智能帧插值技术全解析:从原理到实战的视频流畅度提升指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/v…...
存储系统的容量规划与管理:从预测到优化
存储系统的容量规划与管理:从预测到优化 背景 作为一个专注于存储架构的技术人,我深知容量规划与管理对存储系统的重要性。最近团队在管理存储系统时,遇到了容量不足、资源浪费等问题。为了帮助团队更好地理解和实践存储系统的容量规划与管理…...
W25Q64 进阶应用:从电路设计到高效存储管理的实战解析
1. W25Q64硬件电路设计实战 第一次用W25Q64做项目时,我在电路设计上踩过不少坑。记得有个设备频繁出现数据丢失,最后发现是电源滤波没做好。这个8MB容量的SPI Flash芯片虽然引脚不多,但每个脚的设计细节都直接影响系统稳定性。 1.1 关键引脚…...
突破媒体捕获限制:猫抓cat-catch浏览器扩展全方位实战指南
突破媒体捕获限制:猫抓cat-catch浏览器扩展全方位实战指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓cat-catch是一款专注于网…...
K8s定时任务实战:如何用CronJob每分钟输出Hello World(附表达式详解)
K8s定时任务实战:从Hello World到生产级CronJob配置 在云原生技术栈中,定时任务作为自动化运维的核心组件,其重要性不言而喻。Kubernetes提供的CronJob资源,让开发者能够以声明式的方式管理周期性任务,而无需依赖传统…...
M2LOrder模型Typora写作辅助插件开发:实时监测文章情感基调
M2LOrder模型Typora写作辅助插件开发:实时监测文章情感基调 不知道你有没有过这样的经历:写了一篇技术文章,自己读起来总觉得哪里不对劲,但又说不出来具体问题。或者写产品文案时,明明想表达积极向上的情绪࿰…...
FastAPI CSP:实现配置的终极指南
FastAPI CSP:实现配置的终极指南 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi FastAPI是一个高性能、易于学习、快速编码…...
Local SDXL-Turbo保姆级教程:导出为ONNX格式进一步优化推理速度
Local SDXL-Turbo保姆级教程:导出为ONNX格式进一步优化推理速度 1. 引言:为什么需要导出ONNX? 如果你已经体验过Local SDXL-Turbo那“打字即出图”的畅快感,可能会想:这速度已经很快了,还能不能再快一点&…...
全面只使用sessionid来验证登录-----客户端只保留sessionid
虽然说sessionid 也是可以伪造的,可以快速发送伪造的sessionid,但是因为sessionid是32位的随机字符串,暴力破解需要几亿年,安全性比user_id1,user_id2 高得多。不过一个有意思的事情是:如果我把user_id1改成 user_id32位随机字符串…...
