1. 迭代器Iterator的作用

什么是迭代器
迭代器: 可以被next()函数调用并不断返回下一个值的对象称之为迭代器(Iterator)
从另一种角度来定义迭代器就是:提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。迭代器模式,就是为容器而生

迭代器的作用是什么?
1.Iterator对象称为迭代器(设计模式的一种),主要用于遍历Collection 集合中的元素。
2.迭代是访问集合元素的一种方式,迭代器是一个能够记住遍历位置的对象,迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问完结束,如果想访问一个元素,需要把这个元素前面的所有元素都遍历后,才可以访问
3.Collection集合接口继承了java.lang.Iterable接口,该接口有一个iterator()方法,那么所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象。

注意
Iterator 仅用于遍历集合,Iterator本身并不提供承装对象的能力。如果需要创建Iterator 对象,则必须有一个被迭代的集合。

2. 迭代器Iterator的使用

迭代器的执行原理:(来源于网络图片)

使用迭代器遍历collection集合元素:(hasNext()和 next()方法)
代码演示:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;/*** 使用迭代器遍历collection集合元素* 内部的方法:hasNext()和 next()*/
public class IteratorTest {public void test(){Collection c= new ArrayList();c.add(123);c.add(456);c.add(new Cat("Tom",2));c.add(new String("Jery"));c.add(true);Iterator iterator = c.iterator();//方式一://在调用it.next()方法之前必须要调用it.hasNext()方法进行检测。若不调用,且下一条记录无效,直接调用it.next()会抛出NoSuchElementException异常。
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        //报异常:NoSuchElementException//        System.out.println(iterator.next());while(iterator.hasNext()){System.out.println(iterator.next());}}
}

Iterator迭代器remove()方法的使用
代码演示:

public class IteratorTest {public void test(){Collection c= new ArrayList();c.add(123);c.add(456);c.add(new Cat("Tom",2));c.add(new String("Jery"));c.add(true);Iterator iterator = c.iterator();while(iterator.hasNext()){Object obj = iterator.next();if("Jery".equals(obj)){iterator.remove();          }}//遍历集合iterator = coll.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}}}

Iterator迭代器一般的用法
以ArrayList为例:

 public Iterator<T> iterator() {return new Iterator<T>() {private int index = -1;@Overridepublic boolean hasNext() {return ++index<size;}@Overridepublic T next() {return (T)elementData[index];}@Overridepublic T remove() {T t = next();ArrayList.this.remove(index);index--;return t;}};}

总结:

  1. 使用方法**iterator()**要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素;
  2. 使用**hasNext()**检查序列中是否有元素;
  3. 使用**next()**获取序列中下一个元素;
  4. 使用**remove()**将迭代器新返回的元素删除。

迭代器Iterator接口的作用及其使用相关推荐

  1. Java迭代器Iterator接口

    迭代器 Iterator接口 迭代器的代码实现 增强for循环 Iterator接口 java.util.Iterator接口:(对集合进行遍历) 有两个常用方法 1.boolean hasNext( ...

  2. Java集合迭代器原理图解_Java Iterator接口遍历单列集合迭代器原理详解

    这篇文章主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Iterator接口概述 ...

  3. PHP:Iterator(迭代器)接口和生成器

    迭代器 可在内部迭代自己的外部迭代器或类的接口.详情:http://php.net/manual/zh/class.iterator.php 接口摘要 Iterator extends Travers ...

  4. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合...

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  5. 2021-11-19迭代器的设计原则和iterator Traits的作用与设计

    iterator Traits 的作用是提取出 iteration 的五个性质: 1)iterator_category 迭代器的种类,是否可以间隔跳跃,是单向前进还是两端都可以. 2)value_t ...

  6. 2021-06-19复习java Collection集合 Iterator接口_迭代器 增强for循环 泛型

    2021-06-19复习java Collection集合 Iterator接口_迭代器 增强for循环 泛型 Collection集合 java.util.coLlection接口 所有单列集合的最 ...

  7. 迭代器的设计原则和Iterator Traits的作用与设计

    一.迭代器设计原则 迭代器是容器与算法处理的桥梁 category分类,类别 difference_type两个迭代器之间的距离的类型,容器最大能放多少元素,超过differene_type会有问题. ...

  8. Java Iterator 接口简介和简单用法.

    Iterator 的中文意思是迭代器. 单单从中文翻译也不易理解迭代器的意思啊,  其实Iterator是1个接口,  它的作用就是遍历容器的所有元素. 一, Iterator 接口简介 Iterat ...

  9. java for 迭代器_Java基础-迭代器Iterator与语法糖for-each

    迭代器Iterator与语法糖for-each 一.为什么需要迭代器 设计模式迭代器 迭代器作用于集合,是用来遍历集合元素的对象.迭代器不是Java独有的,大部分高级语言都提供了迭代器来遍历集合.实际 ...

最新文章

  1. 喜欢绘画学的计算机,为什么有的人画画非常好却对计算机一窍不通
  2. Server Tomcat v7.0 Server at localhost was unable tonbs 报错问题解决
  3. 每日一皮:“快准恨”的程序员叠衣法,还不快学起来?
  4. 安全系列------web环境搭建组合
  5. 30是什么意思_“29+16”变“30+18”是什么意思?独立艺术院校有何优势?报考需要注意什么?...
  6. 持久化技术SharedPreferences存储
  7. python 类装饰器
  8. 谈谈JVM内部锁升级过程
  9. java.lang.IllegalArgumentException: Could not resolve placeholder ‘stu.age‘ in value “${stu.age}
  10. Python保存任意长度的matplotlib动画为GIF动图
  11. html中怎么让字体闪烁,HTML最简单的文字闪烁代码
  12. EasyClick Html UI 第十四节 CSS 盒子模型
  13. Oracle Dataguard基于rac主库搭建rac备库
  14. java毕业设计_基于android的二手书城app的设计与实现
  15. 30分钟学会shapely空间几何分析
  16. ISCC -MISC-Retrieve_the_passcode
  17. 武汉大学《GNSS、INS和激光雷达的紧密耦合预积分,用于城市环境中的车辆导航》
  18. 使用 Matlab 解决数学建模问题
  19. hdu 5594 ZYB's Prime 最大流
  20. 一分钟搞懂X86架构

热门文章

  1. 人生苦短-常用必备的Python库清单
  2. 百度地图经纬度,转换为地图上的点
  3. 展示火眼金睛 教你学会内存优劣的识别技巧
  4. 行列式的计算机应用开题报告,(最新整理)矩阵的应用开题报告
  5. 街霸五显示登录服务器,pc版的街霸五如何登陆服务器 | 手游网游页游攻略大全...
  6. 开源数据集,较全,且有对应连接
  7. JavaScript对象详解
  8. 【算法详解】背包模板或模型详解
  9. 企业为何选择企业云盘而不是个人云盘呢?
  10. python生成达芬奇uuid