Iterator 的中文意思是迭代器.

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

一, Iterator 接口简介

Iterator 是为了实现对java容器(collection)进行遍历功能的1个接口.
我们定义iterator (首字母小色) 是实现了Iterator 接口的1个对象.


首先iterator 实现了Iterator接口后, 相当于把1个Collection容器的所有对象, 做成1个线性表(List) . 而iterator本身于1个指针.
这个指针一开始是位于 第1个元素之前的. 如下图  
下面介绍2个Iterator接口内最主要的三个方法.

1.1 boolean hasNext();

判断iterator 内是否存在下1个元素, 如果存在返回true, 否则返回false.
注意, 这时上面的那个指针位置不变.

1.2 Object next();

返回iterator 内下1个元素, 同时上面的指针向后移动一位.
如下图:
可见, 如果不断地循环执行next()方法, 就可以遍历容器内所有的元素了.

1.3 void remove();

删除iterator 内指针的前1个元素,  前提是至少执行过1次next();  

这个方法不建议使用, 建议使用容器本身的romove方法.

二, Iterator 接口的意义

我们知道, 遍历1个ArrayList 和 Linklist 是十分容易的.  
遍历1个Tree容器也不难,  但是实现机制是完全不同.
而遍历1个Set容器就无从下手了.
所以Java 设计了Iterator这个接口,  分别让各种容器自己去重写里面的hasNext() 和 next()方法.
所以我们不用关心各种容器的遍历机制,  只要使用Iterator ,  会让人觉得各种容器的遍历方法都是一样的, 这也是java接口的重要意义.

三,  如何使用 Iterator

但是在java的各种容器内, 例如ArrayList, HashSet等, 并没有直接实现Iterator这个接口.
所以ArrayList, HashSet容器内是没有 hasNext(), next()的方法的.
而是具有 iterator() 这个方法, 返回1个实现了Iterator 接口的 iterator 对象.

注意区别啊.
下面是1个简单例子, 遍历1个HashSet
import java.util.HashSet;
import java.util.Iterator;class Student{private int id;private String name;public Student(int id, String name){this.id = id;this.name = name;}//overwritepublic String toString(){return this.id + ":" + this.name;}//overwrite hashCode()public int hashCode(){return id * name.hashCode();}//overwrite equals()public boolean equals(Object o){Student s = (Student)o;return (s.id == this.id) && (s.name.equals(this.name));}}public class Iterator1{public static void f(){HashSet hs = new HashSet();hs.add(new Student(1,"Jack"));hs.add(new Student(2,"Bill"));hs.add(new Student(3,"Alice"));hs.add(new Student(4,"Cici"));Student st;Iterator it = hs.iterator();  //Polywhile (it.hasNext()){st = (Student)(it.next());System.out.println(st);} }}

输出:
     [java] 2:Bill[java] 1:Jack[java] 4:Cici[java] 3:Alice

Java Iterator 接口简介和简单用法.相关推荐

  1. Java 缓冲流简介及简单用法

    在java编程中, 我们有时会听到缓冲流和原始流等字眼. 其实在之前的博文中, 提到过流可以分为原始流和处理流. http://blog.csdn.net/nvd11/article/details/ ...

  2. Spring AOP 简介以及简单用法

    Spring AOP 简介以及简单用法 如果你去面试java开发, 那么Spring的AOP和DI几乎是必问的问题. 那么AOP是什么呢? 一. AOP 所谓Aop就是 Aspect-Oriented ...

  3. Java里try catch的简单用法

    Java里try catch的简单用法: Java里try catch的简单用法: 1.try+catch 程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理.然后执行catch ...

  4. java中 try用法,Java里try catch的简单用法

    优质回答 回答者:temps1991 Java里try catch的简单用法: 1.try+catch 程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理.然后执行catch块后 ...

  5. Java—Iterator接口介绍及使用

    Iterator接口介绍   Iterator称之为迭代器,是去遍历Collection.Map集合中的元素对象. Iterator常用方法 boolean hasNext():判断是否还有下一个遍历 ...

  6. java中next的用法_关于java iterator的next()方法的用法

    UYOU next()是java迭代器类(Iterator)的方法,获得当前游标指向的下一个元素,详细说明和应用如下:1.迭代器(Iterator)介绍 迭代器是一种设计模式,它是一个对象,它可以遍历 ...

  7. HttpServlet类简介和简单用法

    一, servlet 的三种模式 1.1 实现servlet 接口 如果1个类要实现servlet接口.则要重写如下所有方法: void destroy()ServletConfig getServl ...

  8. DBLP数据集简介及简单用法

    前一段时间利用大名鼎鼎的DBLP数据集做关于论文合作关系推荐的实验,感觉确实是一个非常不错的数据集,可挖掘的东西很多很多,在此对DBLP及其用法做一个简单介绍. 简介 DBLP--Digital Bi ...

  9. Java中console类的简单用法

    Java.io.Console 只能用在标准输入.输出流未被重定向的原始控制台中使用,在 Eclipse 或者其他 IDE 的控制台是用不了的. import java.io.Console; pub ...

最新文章

  1. centos6.5官方dvd做本地yum
  2. automatic asynchronous creation if no note exists
  3. 台式计算机驱动程序未被安装,电脑未能成功安装设备驱动程序怎么办
  4. jQuery框架学习第八天:ASP.NET jQuery实施方案
  5. 【转】MongoDB资料汇总专题
  6. 搭建Android版的React Native项目
  7. C语言——通讯录的实现
  8. iCode:开源的在线 html/css/js 编辑器
  9. 【千锋】网络安全笔记(总篇)--- 持续更新
  10. HTML与CSS重构网易严选页面
  11. NVIDIA Jetson TX2:TX2平台介绍
  12. 获取USB摄像头名字和device ID等信息
  13. Cabbage教学(5)——条件体
  14. 基于java后端的 krpano 功能化
  15. java封装joda_【类库】java时间操作类库:Joda-Time
  16. 量子计算机生命,量子计算机上量子人工生命模型 - 酷酷UFO
  17. 微信公众号 手机充值 html,怎么实现通过微信公众号给会员卡充值?
  18. 《趣学Python——教孩子学编程》——第1部分 学习编程 第1章 Python不是大蟒蛇 1.1 关于计算机语言...
  19. 19号笔刷是哪个_19号笔刷(ps19号笔刷在哪)
  20. java围棋代码_围棋源代码Java_Applet小程序

热门文章

  1. ATF(TF-A)的编译方法
  2. java 服务器线程池测试
  3. python可变参数记录
  4. 2020-11-10(回传递过程)
  5. PWN学习总结(四)—— BROP
  6. 【PHP】创建文件并写入内容
  7. 4、使用PreparedStatement接口实现增,删,改操作(常用)
  8. 17、HTML单选按钮
  9. 线程通信wait与notify
  10. MyEclipse部署Tomcat服务器