首页 > 编程语言 >java 迭代器使用

java 迭代器使用

时间:2023-04-21 20:15:16浏览次数:37  
标签:遍历 Java 迭代 iterator list add 使用 java

https://www.cnblogs.com/SjhCode/p/Iterator.html

 

java 迭代器使用

 

原文链接:https://blog.csdn.net/ACE_kk/article/details/126182500

一、前言
在迭代器(Iterator)没有出现之前,如果要遍历数组和集合,需要使用方法。

数组遍历,代码如下:

String[] arr = new String[]{"Java", "Java虚拟机", "Java中文社群"};
for (int i = 0; i < arr.length; i++) {
String item = arr[i];
}

集合遍历,代码如下:

复制代码
List<String> list = new ArrayList<String>() {{
add("Java");
add("Java虚拟机");
add("Java中文社群");
}};
for (int i = 0; i < list.size(); i++) {
String item = list.get(i);
}
复制代码

而迭代器的产生,就是为不同类型的容器遍历,提供标准统一的方法。

迭代器遍历,代码如下:

Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object object = iterator.next();
// do something
}

总结:使用了迭代器就可以不用关注容器的内部细节,用同样的方式遍历不同类型的容器。

 

二、迭代器介绍
迭代器是用来遍历容器内所有元素对象的,也是一种常见的设计模式。

迭代器包含以下四个方法:

hasNext() :boolean —— 容器内是否还有可以访问的元素。
next() :E —— 返回下一个元素。
remove() :void —— 删除当前元素。
forEachRemaining(Consumer) :void —— JDK 8 中添加的,提供一个 lambda 表达式遍历容器元素。

迭代器使用如下:

复制代码
List<String> list = new ArrayList<String>() {{
add("Java");
add("Java虚拟机");
add("Java中文社群");
}};
Iterator iterator = list.iterator();
// 遍历
while (iterator.hasNext()){
String str = (String) iterator.next();
if (str.equals("Java中文社群")){
iterator.remove();
}
}
System.out.println(list); // [Java, Java虚拟机]
forEachRemaining 使用如下:

List<String> list = new ArrayList<String>() {{
add("Java");
add("Java虚拟机");
add("Java中文社群");
}};
// forEachRemaining 使用
list.iterator().forEachRemaining(item -> System.out.println(item));
复制代码

 

标签:遍历,Java,迭代,iterator,list,add,使用,java
From: https://www.cnblogs.com/chuangsi/p/17341613.html

相关文章

  • C程序使用循环从A到Z显示字符
    以下是一个简单的C程序,使用循环从A到Z显示字符:cCopycode#include<stdio.h>intmain(){charch='A';while(ch<='Z'){printf("%c",ch);ch++;}printf("\n");return0;}这个程序初始化一个......
  • Java WebSocket客户端
    https://www.cnblogs.com/SjhCode/p/WebSocketClient.html注意事项:1.@Scheduled(fixedDelay=5000)2.心跳检测3.导入依赖与导包<dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.......
  • java中有关于时间格式以及定时器遇到的问题
    https://www.cnblogs.com/SjhCode/p/time.html时间格式这个是通过Calendar做时间滚动 //开始时间yyyy-MM-ddHH:mm:ss@Value("${StartTime}")@JsonFormat(timezone="GMT+8",pattern="yyyy-MM-ddHH:mm:ss")@DateTimeFormat(pattern="yyyy-MM-......
  • Java-Day-13(抽象类 + 接口 + 内部类)
    Java-Day-13抽象类(abstract)当父类的某些方法需要声明,但是又不确定如何实现时(主要在于子类的重写时),可以将其声明为抽象方法,那么这个类就是抽象类所谓抽象方法就是没有实现的方法,而所谓没有实现就是指没有方法体当一个类中存在抽象方法时,需要将该类声明为abstract......
  • 多线程的创建和使用
    多线程点击标题旁可查看目录一.基本概念1.线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小......
  • 【逆向】x64程序逆向基础——调用约定和栈使用
    【逆向】x64程序逆向基础 主要区别1.所有地址指针都是64位。2.增加和扩展新的寄存器,并兼容原32位版本的通用寄存器。3.原指令指针寄存器EIP扩展为RIP。寄存器1.64位寄存器兼容原32位寄存器。2.新增加8个XMM寄存器(XMM8-XMM15)。3.扩展原32位寄存器的64位版本,并......
  • Java学习笔记(三)
    1.  请描述你理解的循环按照一定次数重复地执行程序,直至达到次数上限,将重复的代码只编写一次,然后再重复执行即可,这样的程序结构就是循环结构。2.  请描述嵌套for循环执行的过程嵌套循环是先执行外层循环,然后再执行内层循环。外层循环执行一次,内层执行若干次,当内层执行完......
  • QT中在使用QMediaPlaylist类的insertMedia函数插入新播放文件后,出现播放顺序错误的分
    我下面的这段代码的意图是:当前的播放队列中插入一个播放文件到队首,使其为下一个播放文件。但是并没有达到我的预期。于是在代码中加入一段调试程序,将当前的播放文件的序号打印出来。 调试之后的结果如下:发现无论向播放队列中插入几次,当前的播放序列都是1。如果想要在播放......
  • 老杜 JavaWeb 讲解(四) ——Servlet编写JDBC连接数据库
    老杜 JavaWeb 讲解对应视频:08-servlet中编写jdbc程序连接数据库(六)在Servlet(Java小程序)中编写JDBC连接数据库6.1JDBC介绍:JDBC的全称是Java数据库连接(JavaDatabaseconnect),它是一套用于执行SQL语句的JavaAPI。[1]JDBC(JavaDataBaseConnectivity)是Java编程语言中......
  • 电解电容符号及使用方法
    符号1.隔直流:作用是阻止直流通过而让交流通过。2.旁路(去耦):为交流电路中某些并联的组件提供低阻抗通路。3.耦合:作为两个电路之间的连接,允许交流信号通过并传输到下一级电路4.滤波:这个对DIY而言很重要,显卡上的电容基本都是这个作用。5.温度补偿:针对其它组件对温度的适应性不够带来......