迭代器
迭代器Iterator(接口)
-
描述
在程序开发过程中,经常需要遍历集合当中的所有元素,针对这种情况,jdk官方又提供了一个接口java.util.Iterator; Iterator接口它是集合当中的一员,但是它与Map,Collection接口不同,Collection接口和Map接口它主要是用来存储元素的,而Iterator主要使用来迭代访问Collection于Map接口当中的元素。因此我们也经常把Iterator对象称为迭代器。 想要遍历Collection集合中的元素,首先需要获取集合的迭代器,通过迭代器完成迭代操作
-
获取迭代器的方法
public Iterator iterator(); 获取集合对应的迭代器,用来遍历集合当中的元素。
-
概念
迭代:Collection集合元素的通用的获取方式。具体实现:在每次取元素之前判断集合当中有没有元素,如果有就把这个元素取出来,继续在判断,如果还有就再次取出来,一直把集合中的所有元素全部取出来,我们把这种取出方式在专业术语上称为迭代。
-
常用方法
public boolean hasNext(); 如果集合当中仍有元素可以迭代,则返回true,没有元素则返回false public E next(); 获取迭代的下一个元素。 'next,要做两件事' '1.先把下一个元素取出来' '2.会把指针往后移动一位' default void remove(); 从底层集合中删除此迭代器返回的最后一个元素(可选操作)。 这种方法只能在每次调用next()时调用一次。 //java.util.NoSuchElementException;(没有这样的元素) 如果集合当中没有下一个元素,依然使用迭代器从集合中取出元素,就会抛出这样的异常
-
具体实现步骤
'在调用iterator接口当中的next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next方法后,迭代器的索引会向后移动过以为,指向第一个元素并将元素返回。当再次调用next方法时,迭代器的索引会指向第二个元素并将该元素返回,依此类推,知道hasNext方法返回false时,表示迭代器到达了集合的末尾,终止对元素的遍历。如果强硬的在取,程序就会抛出java.util.NoSuchElementException;' 备注;Iterator<E> 接口也是有泛型的,迭代器的泛型是跟着集合走的,集合中定义的什么类型,迭代器就是什么类型。