java集合框架: Iterator迭代器

Iterator迭代器

1. Iterator接口

  • java.util.Iterator接口也是java集合中的一眼,但它与CollectionMap接口不同,CollectionMap主要用于存储元素,而Iterator主要用于迭代访问Collection中的元素

  • 迭代:即 Collection集合元素的通用获取方式。

    在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续再判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语为迭代

  • 两个常用方法 :

    boolean hasNext():判断集合中还有没有下一个元素,有就返回true,没有就返回false

    E next():返回迭代的下一个元素 (取出集合中的下一个元素)

  • Iterator迭代器是一个接口,无法直接使用,需要使用Iterator接口的实现类对象,获取实现类对象方式比较特殊,在Collection接口中有一个方法,叫Iterator<E> iterator();这个方法返回的就是迭代器的实现类对象

  • 迭代器的使用步骤:

    1. 使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
    2. 使用Iterator接口中的方法hasNext判断还有没有下一个元素
    3. 使用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.迭代器的实现原理

  1. Iterator<String> it=coll.iterator():获取迭代器的实现类对象,并且会把指针(索引)指向集合的-1索引
  2. it.hasNext():判断集合中还有没有下一个元素
  3. 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);
}
posted @ 2020-12-28 11:31  迪迦是真的  阅读(112)  评论(0)    收藏  举报
//复制代码按钮 //代码行号 //评论