今天在牛客网练题的时候,出现了Iterator的题,实在想不起来这是什么,于是去查阅了相关资料,顺便自己去IDEA试了一下。总结了一些相关知识如下:

什么是Iterator?

我们来看看菜鸟教程里的解释:

菜鸟教程-Iterator

Iterator是Java中最简单的一种迭代器,用于遍历访问集合。

既然Iterator叫做迭代器,那么就必须了解一下迭代的含义了。

迭代:迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。 每一次对过程的重复被称为一次"迭代",而每一次迭代得到的结果会被用来作为下一次迭代的初始值。

Iterator的四个操作



hasNext()是用来判断集合是否还有下一个元素;

next()则是用来获取集合下一个元素的;

remove()是用来删除集合的当前元素;

forEachRemaining不常用,这里不做讲解。

怎么使用iterator?

  1. Iterator 类位于 java.util 包中,使用前需要引入它,语法格式如下:
import java.util.Iterator; // 引入 Iterator 类
  1. 使用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迭代的更多相关文章

  1. 《尚学堂_史上最易懂的设计模式视频》--章节3 Iterator迭代 模拟列表

    广州尚学堂官网-|广州Java培训|Java培训机构|人工智能+Python培训|PHP培训|全栈工程师培训|UI设计培训|前端移动开发培训http://www.gzsxt.cn/ ==Iterato ...

  2. java ->Iterator (迭代)

    Iterator迭代器概述 java中提供了很多个集合,它们在存储元素时,采用的存储方式不同.我们要取出这些集合中的元素,可通过一种通用的获取方式来完成. Collection集合元素的通用获取方式: ...

  3. java集合-Iterator迭代

    我们常常使用 JDK 提供的迭代接口进行 Java 集合的迭代. Iterator iterator = list.iterator(); while(iterator.hasNext()){ Str ...

  4. Iterator——迭代接口

    迭代对于JAVA的来说绝对不陌生.我们常常使用JDK提供的迭代接口进行Java集合的迭代. Iterator iterator = list.iterator(); while(iterator.ha ...

  5. 一段可以使用的 hibernate获得对象->action存入List->jsp页面用<s:iterator>迭代的代码

    SelectAction.java @SuppressWarnings("serial") @Component("selectAction") @Scope( ...

  6. PHP Iterator迭代对象属性

    foreach用法和之前的数组遍历是一样的,只不过这里遍历的key是属性名,value是属性值.在类外部遍历时,只能遍历到public属性的,因为其它的都是受保护的,类外部不可见. class Har ...

  7. struts2 iterator 迭代标签只显示前五条记录

    <s:iterator value="#session.produceLists" var="produce" begin="0" e ...

  8. 迭代子(Iterator)模式

    迭代子模式又叫做游标模式.迭代子模式可以顺序地访问一个聚集中的元素而必暴露聚集的内部表象. 1.  聚集和Java聚集 多个对象在一起形成的总体形成聚集(Aggregate),聚集对象是能够包容一组对 ...

  9. Scala中Iterator允许执行一次

    背景 使用spark执行mapPartitionsWithIndex((index,iterator)=>{....}),在执行体中将iterator进行一次迭代后,再次根据iterator执行 ...

随机推荐

  1. windows10双系统删除linux

    问题 在这里删除后会发现有残留一个引导区,几百m(下图已经删除完),而且启动会进linux引导,然后必须f12进入选择启动项才可以启动windows 解决方法 使用删除引导就可以了 再使用傲梅分区助手 ...

  2. Cesium中级教程9 - Advanced Particle System Effects 高级粒子系统效应

    Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 要了解粒子系统的基础知识,请参见粒子系统入门教程. Weathe ...

  3. 数据库备份还原 mysqldump

    1.备份全部数据库的数据和结构mysqldump -uroot -p123456 --all-databases >all.bakmysqldump -uroot -p123456 -A > ...

  4. 学习Java第6天

    今天所做的工作: 1.完成学生信息管理系统样卷 2.核心技术接口继承,多态 明天工作安排: 1.类的高级特性(Java类包) 2.异常处理 今天做一个小小的总结,Java程序是完全面向对象的,它的所有 ...

  5. django之集成七牛云对象存储

    Python3 + Django2.0 集成 "七牛云" 对象存储 (SDK文档地址:http://developer.qiniu.com/kodo/api/3928/error- ...

  6. arduino物联网学习

    arduino物联网学习 目录 arduino物联网学习 20200215 OLED屏幕使用教程 材料: 软件 代码注释 完整代码 Arduino IDE 开发 ESP-01S/ESP-01物联网实战 ...

  7. react 局部更新的关键算法 DOM diff算法

    下图是diff算法结构的详细解析: 要点总结:DIFF算法在执行时有三个维度,分别是Tree DIFF.Component DIFF和Element DIFF,执行时按顺序依次执行,它们的差异仅仅因为 ...

  8. python编写购物车

    上次的学习又没有坚持下来,工作忙的不可开交,但我反思了一下还是自己没有下定决心好好学习,所以这次为期3个月的学习计划开始了,下面是这次学习后重新编写的购物车初版代码. 1 # 功能要求: 2 # 要求 ...

  9. Java定时器Timer使用方法详解

    感谢大佬:https://www.jb51.net/article/129808.htm 一.概念 定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程的方式进行处理,所以它和 ...

  10. oracle查看当前正在使用的数据库

    select name from V$DATABASE; 也可以用 select SYS_CONTEXT('USERENV','INSTANCE_NAME') from dual;