java集合框架: Iterator迭代器
Iterator迭代器
1. Iterator接口
-
java.util.Iterator接口也是java集合中的一眼,但它与Collection、Map接口不同,Collection、Map主要用于存储元素,而Iterator主要用于迭代访问Collection中的元素 -
迭代:即 Collection集合元素的通用获取方式。
在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续再判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语为迭代
-
两个常用方法 :
boolean hasNext():判断集合中还有没有下一个元素,有就返回true,没有就返回falseE next():返回迭代的下一个元素 (取出集合中的下一个元素) -
Iterator迭代器是一个接口,无法直接使用,需要使用
Iterator接口的实现类对象,获取实现类对象方式比较特殊,在Collection接口中有一个方法,叫Iterator<E> iterator();这个方法返回的就是迭代器的实现类对象 -
迭代器的使用步骤:
- 使用集合中的方法
iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态) - 使用
Iterator接口中的方法hasNext判断还有没有下一个元素 - 使用
Iterator接口中的方法next取出下一个元素
- 使用集合中的方法
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class iteratorDemo01 {
public static void main(String[] args) {
//创建一个集合对象
Collection<String> coll=new ArrayList<>();
coll.add("aa");
coll.add("bb");
coll.add("cc");
//1.获取迭代器:迭代器的泛型跟着集合走
//多态
Iterator<String> it=coll.iterator();
//2.3.迭代
while (it.hasNext()){
System.out.println(it.next());
}
it.next();//没有元素会抛出NoSuchElementException没有元素异常
//也可以用for循环
for (Iterator<String> it2=coll.iterator();it2.hasNext();){
System.out.println(it2.next());
}
}
}
2.迭代器的实现原理
Iterator<String> it=coll.iterator():获取迭代器的实现类对象,并且会把指针(索引)指向集合的-1索引it.hasNext():判断集合中还有没有下一个元素it.next():取出下一个元素,把指针向后移动一位
3.增强for循环
- 底层使用的也是迭代器,使用for循环的格式,简化的迭代器的书写
- 所有的单列集合都可以使用增强for,
Collection<E>extends Iterable<E> public interface Iterable<T>实现这个接口允许对象成为“foreach”语言的目标- 新for循环必须有被遍历的目标,目标只能是
Collection或数组,仅仅作为遍历操作
Collection<String> coll=new ArrayList<>();
for (String str: coll){
System.out.println(str);
}

浙公网安备 33010602011771号