你知道什么是Iterator(迭代器)吗?java Iterator遍历Collection集合元素又是怎样的呢?下面的文章将会为你做详细的解答。
首先来给你简单的介绍一下Iterator(迭代器),Iterator(迭代器)其实就是一个接口,作用就是遍历容器的所有元素。
它也是Java集合框架的成员,可是,它和Collection以及Map系列的集合是不一样的,Collection和Map系列集合主要用于盛装其他对象,Iterator主要用于遍历(也就是迭代访问)Collection集合中的元素。
Iterator接口隐藏了各种Collection实现类的底层细节,向应用程序提供了遍历Collection集合元素的统一编程接口。
Iterator接口里定义下面的4个方法:
下面是通过Iterator接口来遍历集合元素的示例:
import java.util.Collection; import java.util.HashSet; import java.util.Iterator; public class IteratorTest { public static void main(String[] args) { // 创建一个集合 Collection objs = new HashSet(); objs.add("A大1教程"); objs.add("C大2教程"); objs.add("F大3教程"); // 调用forEach()方法遍历集合 // 获取books集合对应的迭代器 Iterator it = objs.iterator(); while (it.hasNext()) { // it.next()方法返回的数据类型是Object类型,因此需要强制类型转换 String obj = (String) it.next(); System.out.println(obj); if (obj.equals("C大2教程")) { // 从集合中删除上一次next()方法返回的元素 it.remove(); } // 对book变量赋值,不会改变集合元素本身 obj = "C大4教程"; } System.out.println(objs); } }
Iterator仅用于遍历集合,假如,需要创建Iterator对象,那么就必须有一个被迭代的集合。
没有集合的Iterator没有存在的价值。
这里的话要注意一下了,Iterator必须依附于Collection对象,假如,有一个Iterator对象,那么必然有一个与之关联的Collection对象。
Iterator提供了两个方法来迭代访问Collection集合里的元素,并可通过remove()方法来删除集合中上一次next()方法返回的集合元素。
上面的程序,第24行代码对迭代变量obj进行赋值,但当再次输岀objs集合时,会看到集合里的元素没有任何改变。
所以当使用Iterator对集合元素进行迭代时,Iterator并不是把集合元素本身传给了迭代变量,而是把集合元素的值传给了迭代变量,所以修改迭代变量的值对集合元素本身没有任何影响。
当使用Iterator迭代访问Collection集合元素时,Collection集合里的元素不能被改变,只有通过Iterator的remove()方法删除上一次next()方法返回的集合元素才可以,否则将会引发“java.util.ConcurrentModificationException”异常。
你还想了解更多的java相关知识吗?请继续关注奇Q工具网的常见问题栏目来进行了解和学习吧。
推荐阅读: