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(),这个方法返回的就是迭代器的实现对象

迭代器的使用步骤
- 使用集合中的方法iterotor()获取迭代器的实现类对象,使用Iterator接口接收(这是一个多态的写法)
- 使用Iterator接口中的方法hasNext判断还有没有下一个元素
- 使用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()把元素取出并且把指针向后移动一位,继续判断集合中有没有下一个元素,知道判断出没有下一个元素时结束。

浙公网安备 33010602011771号