今天在牛客网练题的时候,出现了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. CAS基础

    有锁机制存在以下问题: (1)在多线程竞争下,加锁.释放锁会导致比较多的上下文切换和调度延时,引起性能问题. (2)一个线程持有锁会导致其它所有需要此锁的线程挂起. (3)如果一个优先级高的线程等待一 ...

  2. C++中的const和mutable

    1 #include<iostream> 2 using namespace std; 3 //如果在类A的成员函数dis()中想要修改_z,但是不能修改_x,_y怎么办? 4 //如果d ...

  3. java抽象类案例

    1 package face_09; 2 /* 3 * 雇员示例: 4 * 需求:公司中程序员有姓名,工号,薪水,工作内容. 5 * 项目经理除了有姓名,工号,薪水,还有奖金,工作内容. 6 * 对给 ...

  4. Error:(3, 21) java: 程序包javax.servlet不存在的解决方法

    采用 https://blog.csdn.net/GK666_/article/details/106442929得到解决

  5. python列表和索引--7

    备注:列表元素索引下限从0开始,列表用[ ]表示

  6. JavaScript数据结构之链表

    链表相较于数组的优缺点 1. 链表在 插入.删除.移动数据效率比数组要高,数组插入.移动.删除数据需要改变没有数据的索引,而链表则只需要更改指针即可 2. 在查询方面,数组要优于链表,数组存储的数据是 ...

  7. ApacheCN C/C++ 译文集(二) 20211204 更新

    编写高效程序的艺术 零.序言 第一部分:性能基础 一.性能和并发性介绍 二.性能测量 三.CPU 架构.资源和性能 四.内存架构和性能 五.线程.内存和并发 第二部分:高级并发 六.并发和性能 七.并 ...

  8. ApacheCN 数据科学译文集 20210313 更新

    新增了五个教程: Python 和 Jupyter 机器学习入门 零.前言 一.Jupyter 基础知识 二.数据清理和高级机器学习 三.Web 爬取和交互式可视化 Python 数据科学和机器学习实 ...

  9. 「SNOI2017」一个简单的询问

    「SNOI2017」一个简单的询问 简单的解法 显然可以差分一下. \[get(l,r,x)\times get(l1,r1,x)=get(1,r,x) \times get(1,r1,x)-get( ...

  10. JS切割图片-滑动门效果

    转载请注明来源:https://www.cnblogs.com/hookjc/ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...