迭代器Iterator接口
- 在程序开发过程中,经常需要遍历集合当中的所有元素,针对这种情况,JDK官方又提供了一个接口java.util.Iterator。Iterator接口中它也是集合当中的一员,但是它与Map、Collection接口不同,Collention接口和Map接口他主要用来存储元素的,而Iterator主要用于迭代访问Collention与Map接口当中的元素。因此我们也经常把Iterator对象成为迭代器。
- 想要遍历Collection集合当中的元素,首先需要获取该集合的迭代器,通过迭代器完成迭代操作
获取迭代器的方法: - public Iterator iterator():获取集合对应的迭代器,用来遍历集合当中的元素。
迭代的概念 - 迭代:从Collection集合元素的一种通用获取方式。具体实现:在每次去元素之前首先判断集合当中有没有元素,如果有,就把这个元素取出来,继续再判断,如果还有就再一次取出来,一直把集合当中的所有元素全部取出来。我们把这种取出方式在专业术语上成为迭代。
Iterator接口的常用api方法: - public Enext():获取迭代的下一个元素
- public boolean hasNaxt():如果集合当中仍有元素可以迭代,则返回true,如果没有元素,则返回false。
迭代器的实现原理
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201203210332994.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L091dHNpZGVyX2lu,size_16,color_FFFFFF,t_70#pic_center)
- 在调用Iterator接口当中的next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,当再次调用next方法时,迭代器的索引会指向第二个元素并将该元素返回,以此类推,直到hasNext方法返回false时,表示迭代器达到了集合的末尾,终止对元素的遍历。如果强硬的再取集合的元素,此时的程序就会抛出没有元素异常java.util.NoSuchElementException
- 备注:Iterator接口也是有泛型的,迭代器的泛型是跟着集合走的,集合当中定义的什么类型,迭代器就是什么类型。
代码实例如下:
public static void main(String[] args) {
Collection<String> coll = new ArrayList<>();
coll.add("美国");
coll.add("英国");
coll.add("法国");
coll.add("中国");
coll.add("日本");
Iterator<String> iterator = coll.iterator();
boolean b1 = iterator.hasNext();
System.out.println(b1);
String str01 = iterator.next();
System.out.println(str01);
Iterator<String> iterator1 = coll.iterator();
while (iterator1.hasNext()){
String str = iterator1.next();
System.out.println(str);
}
}