一.迭代器
属于java.util.Iterator接口:迭代器有三个方法:
boolean hasNext()如果有有元素可以迭代,则返回true。
判断集合中还有没有下一个元素,有就返回true,没有则返回false。
E next()返回迭代的下一个元素。
remove()将迭代器返回的元素删除。
二.迭代器的使用步骤和代码演示
使用步骤:
1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
2.使用Iterator接口中的方法hasNext判断还有没有下一个元素
3.使用Iterator接口中的方法next取出集合中的下一个元素
代码演示:
package java17.数据结构和List和Set和Collections;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class dawdwa {
public static void main(String[] args) {
Collection<Integer> list = new ArrayList<>();
// 首先我们先创建集合 然后给集合中添加元素
list.add(10);
list.add(20);
list.add(8);
list.add(7);
list.add(100);
// 然后我们创建迭代器对象
Iterator<Integer> i = list.iterator();
// 然后我们通过hasNext()方法判断还有没有下一个元素
while(i.hasNext()) {
// 如果有下一个元素,则进去这个代码块中使用迭代器的next()方法获取元素
Integer i1 = i.next();
// 然后打印输入这个元素
System.out.print(i1+" ");
}
}
}
这样我们就使用迭代器对这个进行的遍历。
三.实现原理
在调用Iterator的next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,当再次调用next方法时,迭代器的索引会指向第二个元素并将该元素返回,依此类推,直到hasNext方法返回false,表示到达了集合的末尾,终止对元素的遍历。
怕很多人不理解这个所以我总结了一下:
Iterator迭代器对象遍历集合时,内部是采用指针的方式来定位集合中的元素,
在调用Iterator的next()方法之前,迭代器指针位于首个元素之前,不会指向任何一个元素,
在调用一个next()方法后给移一位,并且将指向的元素返回,以此类推直到集合的最后一个元素结束,结束循环。(这样是不是很好理解)