Iterator迭代器接口

使用Iterator接口遍历集合元素

1 Iterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素。
2 GOF给迭代器模式的定义为:提供一种方法访问一个容器(container)对象中各个元
素,而又不需暴露该对象的内部细节。迭代器模式,就是为容器而生。类似于“公
交车上的售票员”、“火车上的乘务员”、“空姐”。
3 Collection接口继承了java.lang.Iterable接口,该接口有一个iterator()方法,那么所
有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了
Iterator接口的对象。
4 Iterator 仅用于遍历集合,Iterator 本身并不提供承装对象的能力。如果需要创建
Iterator 对象,则必须有一个被迭代的集合。
5 集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合
的第一个元素之前。

iterator接口的方法


在调用it.next()方法之前必须要调用it.hasNext()进行检测。若不调用,且下一条记录无效,直接调用it.next()会抛出NoSuchElemenException异常

迭代器执行原理

iterator接口remove()方法

1 Iterator可以删除集合的元素,但是是遍历过程中通过迭代器对象的remove方 法,不是集合对象的remove方法。
2 如果还未调用next()或在上一次调用 next 方法之后已经调用了 remove 方法,再调用remove都会报IllegalStateException。

package BaiYSTest1;import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;/** Iterator迭代器使用:集合元素的遍历操作,使用迭代器Iterator接口*        1.内部的方法:hasNext()和 next();*      2.集合对象每次调用iterator()方法都得到一个全新的迭代器对象*        默认游标都在集合的第一个元素之前。*      3,内部定义了remove(),可以在遍历的时候,删除集合中的元素,此方法不同于集合直接调用remove()*/
public class CollectionTest2 {public static void main(String[] args) {Collection coll = new ArrayList();coll.add(123);coll.add(new Date());coll.add("heipapap");coll.add("baibai");coll.add(false);coll.add(new Person("Tom",23));coll.add(new Person("maruya",23));Iterator it  = coll.iterator();//方式一 :不推荐使用for(int i =0;i<coll.size();i++){System.out.println(it.next());}//方式二:推荐使用//hasNext():判断是否还有下一个元素while(it.hasNext()){//next(): 1指针下移;2将下移以后集合位置上的元素返回System.out.println(it.next());}//经常犯错误的两种写法一Iterator it1 = coll.iterator();while((it1.next())!=null){System.out.println(it1.next());}//经常犯错误的两种写法二while(coll.iterator().hasNext()){System.out.println(coll.iterator().next());}//删除集合中的元素Iterator it2 = coll.iterator();while(it2.hasNext()){Object obj = it2.next();if("baibai".equals(obj)){it2.remove();}} }
}

Iterator迭代器接口讲解相关推荐

  1. 迭代器 (Iterator迭代器接口)

    1.Iterator接口介绍 lterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素. java集合分为Collection(单列集合)和Map(双列集合) ...

  2. Java基础23-集合类2(Set接口,Iterator迭代器)

    一.Set接口简介 根据API,Set接口是一个不包含重复元素的 collection.更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null ...

  3. es6 迭代器(遍历器)Iterator 自定义遍历器 lterator/简单模拟values方法 for of运行机制 Array/Set/Map默认迭代器接口 对象设置迭代器

    文章目录 迭代器 Iterator 用处 (需要自定义遍历数据的时候) 自定义 遍历器 lterator 简单模拟values方法 Array Set Map 默认迭代器接口 entries valu ...

  4. Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)

    文章目录 Java基础知识(二) 1.Object类的常用方法 1.1 toString方法 1.2 equals方法 1.3 Objects类 2.日期时间类 2.1 Date类 2.2 DateF ...

  5. Java基础加强重温_05:Iterator迭代器、增强for循环、集合综合案例-斗地主、数据结构(栈、队列、数组、链表、红黑树)、List接口、Set接口

    摘要: Java基础加强重温_05: Iterator迭代器(指针跟踪元素). 增强for循环(格式.底层). 集合综合案例-斗地主(代码规范抽取代码,集合元素打乱). 数据结构[栈(先进后出,子弹夹 ...

  6. 设计模式(十五):Iterator迭代器模式 -- 行为型模式

    1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合. 集合不一定是均一的.图形用 ...

  7. 设计模式 - Iterator(迭代器)

    2019独角兽企业重金招聘Python工程师标准>>> 模式用途:设计能装载任意对象的容器,并要求该容器有一个遍历元素的iterator()方法,用来遍历容器中的每个元素. 设计一个 ...

  8. Java核心API -- 7(Iterator迭代器、Comparable、Comparator比较器)

    1. Iterator迭代器 所有Collection的实现类都实现了iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素迭代的便利.在java.util包下. 1) ...

  9. Iterator迭代器

    Iterator迭代器 Iterator接口 java.util.Iterator接口:迭代器(对集合进行遍历)     有两个常用的方法         boolean hasNext() 如果仍有 ...

最新文章

  1. pg数据库生成随机时间_如何测试数据库查询优化器
  2. 赢在 CSDN:我在 CSDN 的成长,“长风破浪会有时”,如何保证自己有持续写作的动力?
  3. 730阵列卡支持多大硬盘_华为1000多手机哪款好?推荐只此一款!华为品牌性价比最高千元机...
  4. LNMP详解(十二)——Nginx URL重写实战
  5. js实现倒计时的小例子
  6. UAV 无人机检测实践分析
  7. Android系统下扫描枪的设置
  8. 查看你的姓氏排名和姓氏来源
  9. 数论 - 质数(素数)基础【 素数的判断 + 试除法分解质因数 + 求1-n之间的素数的三种筛法 】
  10. linux中shift用法,Linux shell脚本中shift的用法说明
  11. 游戏本地化翻译有哪些内容需要注意
  12. java7723魂斗罗2_魂斗罗2013-丛林之谜
  13. mikrotik桥接TP-link教程
  14. 用unity实现大转盘
  15. WebStrom代码中出现浅黄色背景
  16. python读取tif文件与png文件
  17. UE4过场动画的制作流程
  18. Bugzilla一些权限设置(bug,项目的权限)
  19. 使用git更新仓库时出现unable to access ‘https://github.com/xxx: Failed to connect to github.com port 443: Time
  20. python代码怎么写(一)

热门文章

  1. python 字符串 find_Python 字符串 find() 方法
  2. php ztree异步加载数据格式,zTree异步加载简单demo
  3. Adobe illustrator 粉色背景字体是为什么 - 连载19
  4. AE物体表面跟踪特效合成高级插件:Lockdown for Mac
  5. fcpx视觉特效插件包 - FxFactory for Mac 支持M1芯片
  6. mongo java mapreduce_MongoDB中的MapReduce简介
  7. P2240 【深基12.例1】部分背包问题
  8. 简单英文题 26 The Nearest Number(python)
  9. rpm 安装 忽略依赖_rpm 解决依赖的方法
  10. 表单元素聚焦状态回车提交表单问题小记