迭代器Iterator

迭代器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。
    迭代器的实现原理
    在这里插入图片描述
  • 在调用Iterator接口当中的next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,当再次调用next方法时,迭代器的索引会指向第二个元素并将该元素返回,以此类推,直到hasNext方法返回false时,表示迭代器达到了集合的末尾,终止对元素的遍历。如果强硬的再取集合的元素,此时的程序就会抛出没有元素异常java.util.NoSuchElementException
  • 备注:Iterator接口也是有泛型的,迭代器的泛型是跟着集合走的,集合当中定义的什么类型,迭代器就是什么类型。
    代码实例如下:
/**
 * java.util.Iterator接口:迭代器(对集合进行遍历)
 * 有两个常用的方法:
 *          public E next()
 *          public boolean hasNext()
 *  Iterator 它是一个接口,无法直接使用,需要借助于Iterator的实现对象,获取实现类对象的方式比较特殊
 *  Collection接口当中有一个api方法,iterator()这个方法的返回值就是一个迭代器实现类的对象
 *  Iterator<E> iterator() 返回值就是此Collection元素上要进行迭代器的迭代器对象
 *
 *  迭代器的使用步骤:
 *          1、通过集合的iterator()方法此集合元素的迭代器实现类对象,使用Iterator接口进行接受(多态)
 *          2、使用Iterator接口中定义的方法hasNext()判断集合当中还有没有下一个元素
 *          3、使用Iterator接口当中的方法next()取出集合当中的下一个元素
 */
 public static void main(String[] args) {
        //创建一个集合对象
        Collection<String> coll = new ArrayList<>();
        coll.add("美国");
        coll.add("英国");
        coll.add("法国");
        coll.add("中国");
        coll.add("日本");
        //1、使用结合当中的iterator方法获取迭代器实现类对象,使用接口接收
        Iterator<String> iterator = coll.iterator();
        //2、使用hasNext()方法判断是否还有下一个元素
        boolean b1 = iterator.hasNext();
        System.out.println(b1);//true
        //3、使用next方法取出集合当中的下一个元素
        String str01 = iterator.next();
        System.out.println(str01);//美国
        //4、使用while循环将剩下的元素取出
        //三步  1、获取迭代器   2、判断是否有下一个元素   3、取出元素
        Iterator<String> iterator1 = coll.iterator();
        while (iterator1.hasNext()){
            String str = iterator1.next();
            System.out.println(str);//美国 英国  法国  中国   日本
        }
    }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值