Iterator接口(也称为Iterator迭代器)介绍

Iterator接口是干什么的?

在程序开发过程中,我们经常需要遍历集合中的所有元素,但是因为有的集合含有索引有的集合没有索引,无法都通过索引遍历出集合中的元素。为了解决这种问题,我们使用JDK专门提供的一个接口java.util.Iterator。Iterator接口也是Java众多集合中的一员,但是它与Collection、Map接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问Collection中的元素,因此Iterator对象也被称为迭代器

什么是迭代?

即Collection集合元素的通用获取方式。取出元素之前要先判断集合中有没有元素,如果有就把这个元素取出来,继续再判断,如果还有就再取出来。一直把集合中所有元素全部取出。这种取出方式的专业属于叫做迭代

Iterator接口中常用的方法

1、boolean hasNext()方法

方法描述:如果仍有元素可以迭代,则返回true
作用:判断集合中还有没有下一个元素,有就返回true,没有就返回false

2、E next()方法

方法描述:返回迭代的下一个元素
作用:取出集合中的下一个元素

注意

Iterator迭代器是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,但是获取实现列的方式比较特殊,我们通过Collection接口中的一个方法,叫做iterotor(),这个方法返回的就是迭代器的实现对象
在这里插入图片描述

迭代器的使用步骤

  1. 使用集合中的方法iterotor()获取迭代器的实现类对象,使用Iterator接口接收(这是一个多态的写法)
  2. 使用Iterator接口中的方法hasNext判断还有没有下一个元素
  3. 使用Iterotor接口中的方法next取出集合中的下一个元素

举例说明:

public static void main(String[] args){
// 创建一个ArrayList集合,向上转型为Collection接口
	Collection<String> coll = new ArrayList<>();
// 向coll集合中添加元素
	coll.add("波普");
	coll.add("卡鲁索");
	coll.add("格林");
	coll.add("詹姆斯");
	coll.add("戴维斯");
// Coolection类中的iterator方法返回的是Iterator类型的对象
	Iterator<String> it = coll.iterator();
	// 第一种遍历方法
	while(it.hasNext()){// .hasNext用来判断集合中是否还含有元素
		String e = it.next();// .next方法用于取出集合中的元素
		System.out.println(e);
	}
	// 第二种遍历方法,步进表达式不用写
	for(Iterator<String> it2 = coll.iterator();it2.hasNext();){
		String e = it.next();
		System.out.println(e);
	}
}

迭代器的实现原理

上个例子我们new ArrayList<>()并且添加了数据之后内存中开辟出了五个空间,然后我们使用Iterator<String> it = coll.iterator();获取了迭代器的实现类对象,此时会把指针指向集合的-1索引,当我们遍历集合的时候,it.hasNext()首先指针判断集合内存中有没有下一个元素,如果有的话则使用it.next()把元素取出并且把指针向后移动一位,继续判断集合中有没有下一个元素,知道判断出没有下一个元素时结束。

posted @ 2020-10-12 20:15  谢海川  阅读(176)  评论(0)    收藏  举报