Iterator迭代
今天在牛客网练题的时候,出现了Iterator的题,实在想不起来这是什么,于是去查阅了相关资料,顺便自己去IDEA试了一下。总结了一些相关知识如下:
什么是Iterator?
我们来看看菜鸟教程里的解释:

Iterator是Java中最简单的一种迭代器,用于遍历访问集合。
既然Iterator叫做迭代器,那么就必须了解一下迭代的含义了。
迭代:迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。 每一次对过程的重复被称为一次"迭代",而每一次迭代得到的结果会被用来作为下一次迭代的初始值。
Iterator的四个操作

hasNext()是用来判断集合是否还有下一个元素;
next()则是用来获取集合下一个元素的;
remove()是用来删除集合的当前元素;
forEachRemaining不常用,这里不做讲解。
怎么使用iterator?
- Iterator 类位于 java.util 包中,使用前需要引入它,语法格式如下:
import java.util.Iterator; // 引入 Iterator 类
- 使用Iterator迭代的语法格式:
//获取迭代器语法
Iterator[<Type>] 变量名 = 集合名.iterator[<Type>]();
注意:集合名后面调用的iterator方法里的i是小写。
代码示例
package com.gy.practice;
import java.util.ArrayList;
import java.util.Iterator;
//iterator
public class Demo01 {
public static void main(String[] args) {
//创建集合
//ArrayList<引用数据类型> 变量名 = new ArrayList<引用数据类型>();
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(13);
list.add(6);
list.add(99);
//迭代器Iterator
//Iterator[引用数据类型] 变量名 = 集合/列表名.iterator();
Iterator<Integer> it = list.iterator();
//迭代器遍历元素
while(it.hasNext()){
list.remove(it);
System.out.println(it);
System.out.println(it.next());
}
}
}
输出结果如下:

我创建了一个ArrayList集合来存储数据,向里面加入了1,13,6,99这四个元素。然后通过Iterator<Integer> it = list.iterator();语法格式调用了迭代器。
it相当于占了一个空的位置作为头,当it有下一个元素时,会将集合的第一个元素删去,也就是删除it指向的下一个元素。删除后下一个元素就会成为集合的第一个元素。比如,第一次执行while语句时,it的值为java.util.ArrayList$Itr@1540e19d,这时它的下一个元素为1;第二次执行时it的下一个元素就变成了13,因为1被删除了。
执行过程如下:

Pass:以上仅为个人学习分享,如有建议或疑问希望能够不吝赐教!谢谢!
Iterator迭代的更多相关文章
- 《尚学堂_史上最易懂的设计模式视频》--章节3 Iterator迭代 模拟列表
广州尚学堂官网-|广州Java培训|Java培训机构|人工智能+Python培训|PHP培训|全栈工程师培训|UI设计培训|前端移动开发培训http://www.gzsxt.cn/ ==Iterato ...
- java ->Iterator (迭代)
Iterator迭代器概述 java中提供了很多个集合,它们在存储元素时,采用的存储方式不同.我们要取出这些集合中的元素,可通过一种通用的获取方式来完成. Collection集合元素的通用获取方式: ...
- java集合-Iterator迭代
我们常常使用 JDK 提供的迭代接口进行 Java 集合的迭代. Iterator iterator = list.iterator(); while(iterator.hasNext()){ Str ...
- Iterator——迭代接口
迭代对于JAVA的来说绝对不陌生.我们常常使用JDK提供的迭代接口进行Java集合的迭代. Iterator iterator = list.iterator(); while(iterator.ha ...
- 一段可以使用的 hibernate获得对象->action存入List->jsp页面用<s:iterator>迭代的代码
SelectAction.java @SuppressWarnings("serial") @Component("selectAction") @Scope( ...
- PHP Iterator迭代对象属性
foreach用法和之前的数组遍历是一样的,只不过这里遍历的key是属性名,value是属性值.在类外部遍历时,只能遍历到public属性的,因为其它的都是受保护的,类外部不可见. class Har ...
- struts2 iterator 迭代标签只显示前五条记录
<s:iterator value="#session.produceLists" var="produce" begin="0" e ...
- 迭代子(Iterator)模式
迭代子模式又叫做游标模式.迭代子模式可以顺序地访问一个聚集中的元素而必暴露聚集的内部表象. 1. 聚集和Java聚集 多个对象在一起形成的总体形成聚集(Aggregate),聚集对象是能够包容一组对 ...
- Scala中Iterator允许执行一次
背景 使用spark执行mapPartitionsWithIndex((index,iterator)=>{....}),在执行体中将iterator进行一次迭代后,再次根据iterator执行 ...
随机推荐
- 安全检测服务如何帮助社交类App提升应用自身和用户个人安全
社交类App如今人手必备,且大部分功能.业务活动和产品价值均与用户紧密联系,流量的多少甚至影响着一款应用的生命周期.因此,开发者们开始关注内容合规.治理黑产.防盗防爬等应用安全方面的能力.识别虚假流量 ...
- WSL删除子系统后无法重装
问题 WSL卸载后安装error 解决办法 UWP应用卸载后没有删除目录下的文件 C:\Users\wwwfe\AppData\Local\Packages路径下删除就可以了 再次安装会卡顿很久,可能 ...
- Natasha 4.0 探索之路系列(一) 概况
Natasha 简介 Natasha 是一个基于 Roslyn 的动态编译类库, 它以极简的 API 完成了动态编译的大部分功能, 使用它可以在程序运行时编译出新的程序集. Natasha 允许开发人 ...
- 学习OAuth 2.0
认识OAuth 2.0 OAuth 2.0 是行业标准的授权协议. OAuth 2.0 专注于客户端开发人员的简单性,同时为 Web 应用程序.桌面应用程序.移动设备提供特定的授权流程. 应用场景 有 ...
- Servlet三种创建方式
直接实现 Servlet 接口不太方便,所以 Servlet 又内置了两个 Servlet 接口的实现类(抽象类),分别为 GenericServlet 和 HttpServlet,因此,创建 Ser ...
- golang中值类型的嵌入式字段和指针类型的嵌入式字段
总结: 1. 值类型的嵌入式字段,该类型拥有值类型的方法集,没有值指针类型的方法集 2. 指针类型的嵌入式字段,该类型拥有值指针类型的方法集,没有值类型的方法集,并且,该类型的指针类型也有值指针类型的 ...
- 003Linux查看文件内容的5个命令姿势
01 开篇 Linux 中查看文件内容常用的有如下 5 个命令: cat: more: less: tail: head. 02依次看看这些命令的使用姿势 cat 一次性将所有内容输出到屏幕上,方便查 ...
- Android性能优化之Android 10+ dex2oat实践
作者:字节跳动终端技术--郭海洋 背景 对于Android App的性能优化来说,方式方法以及工具都有很多,而dex2oat作为其中的一员,却可能不被大众所熟知.它是Android官方应用于运行时,针 ...
- Java线上问题排查神器Arthas实战分析
概述 背景 是不是在实际开发工作当中经常碰到自己写的代码在开发.测试环境行云流水稳得一笔,可一到线上就经常不是缺这个就是少那个反正就是一顿报错抽风似的,线上调试代码又很麻烦,让人头疼得抓狂:而且deb ...
- dp学习(二)
树和图上的dp. 4. 简单树形dp 这些是最为简单的树形dp. 一般来说,树形dp是通过子树的dp值推出当前点的dp值. 在这里,我们默认当前节点为u,它的儿子节点为v,树的根为rt. 例题4.1 ...