迭代器和增强for的使用
2023-02-18 16:35:56 时间
迭代器和增强for
迭代器是什么?
- 迭代器是帮助遍历集合的类
- 它是一个接口
迭代器演示
迭代器的演示
迭代器的创建
集合.iterator(); 返回一个Iterator<引用类型>
遍历时删除修改,会引发并发修改异常
异常:ConcurrentModificationException
产生原因:
- 在迭代器遍历集合的时候,如果使用集合对象增删集合元素,就会出现并发修改异常
解决异常
- 如果要删除元素,可以使用迭代器的remove()方法
- 如果要添加元素,迭代器里面没有提供添加的方法。如果要用需要使用另一个迭代器ListItr
//删除演示:
//创建Arraylist 集合
ArrayList<String> list = new ArrayList<>();
//添加集合
list.add("CSDN");
list.add("常家壮");
list.add("博客");
//迭代器创建
Iterator<String> iterator = list.iterator();
//循环
//快捷键:itit
while (it.hasNext()) {
String s = it.next();
//判断之后删除
if(s.equals("常家壮")){
it.remove(); //删除当前元素
}
}
创建迭代器如下演示:
//创建Arraylist 集合
ArrayList<String> list = new ArrayList<>();
//添加集合
list.add("CSDN");
list.add("常家壮");
list.add("博客");
//迭代器创建
Iterator<String> iterator = list.iterator();
方法 | 说明 |
---|---|
E next() | 获取集合中的元素 |
boolean hasNext() | 判断集合中有没有下一个元素 |
void remove() | 删除当前元素 |
遍历集合
public class Texitit {
public static void main(String[] args) {
//创建Arraylist 集合
ArrayList<String> list = new ArrayList<>();
//添加集合
list.add("CSDN");
list.add("常家壮");
list.add("博客");
//迭代器遍历集合
Iterator<String> iterator = list.iterator();
//用迭代器遍历数组 如果用idea 快捷键:itit
while (iterator.hasNext()) {
String next = iterator.next();
System.out.println(next);//输出遍历结果
}
}
}
迭代器底层源码
public boolean hasNext() {
return cursor != size;
}
public E next() {
checkForComodification();
int i = cursor;
if (i >= size){
throw new NoSuchElementException();
}
Object[] elementData = ArrayList.this.elementData;
if (i >= elementData.length){
throw new ConcurrentModificationException();
}
cursor = i + 1;
return (E) elementData[lastRet = i];
}
增强for
提到迭代器就不得不说,增强for,增强for它的实现就是用的迭代器
增强for使用比迭代器简单
增强for底层是迭代器,当在遍历时删除修改,也会出现并发异常
作用
- 遍历集合获取每个元素
格式
for(元素类型 元素名 : 集合/数组){
代码;
}
代码演示
public class TexitFor {
public static void main(String[] args) {
//创建Arraylist 集合
ArrayList<String> list = new ArrayList<>();
//添加集合
list.add("CSDN");
list.add("常家壮");
list.add("博客");
//增强for实现遍历
for (String s : list) {
System.out.println(s);//打印集合元素
}
}
}
感觉不足请在评论区,留言
相关文章
- 常见算法合集[java源码+持续更新中...]
- 分布式事务(二)Java事务API(JTA)规范
- 北漂不易,逆风前行[给想在北京工作的java同学们诚恳的建议!]
- Java工程师的生活、读书、技术栈
- 十大基础排序算法[java源码+动静双图解析+性能分析]
- 分享两个免费下载Windows系统镜像
- CSRF-跨站请求伪造-相关知识
- 在VMware上安装Metasploitable2
- SSRF-服务器端请求伪造-相关知识
- RCE-远程命令执行和代码执行漏洞-知识
- 文件包含漏洞-知识点
- 包含漏洞-读写文件以及执行命令
- XXE-XML外部实体注入-知识点
- Ninjutsu_v3_08_2020-安全渗透系统安装
- 单兵渗透工具-Yakit-Windows安装使用
- SpringBoot-快速搭建并快速验证是否可用
- Metasploit-模块介绍
- Kali-登录暴力破解器工具-medusa使用
- PS软件下载及安装Photoshop cc 2018下载链接及安装教程(包括2023版本)
- 顺应时代趋势,CSN的安全可控之路