• java 通过Iterator实现Collection集合遍历


    我们先来看一段代码
    使用 Iterator 需要调入
    import java.util.Iterator;

    public static void main(String args[]) throws customException {
        Collection<String> list = new ArrayList<String>();
        list.add("你好");
        list.add("可爱的");
        list.add("小猫猫");
        Iterator<String> item = list.iterator();
        System.out.println(item.next());
        System.out.println(item.next());
        System.out.println(item.next());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    运行结果如下
    在这里插入图片描述
    我们通过ArrayList实现了一个字符串元素的Collection集合
    并向集合中添加了三条数据
    然后通过 Iterator实现了集合的iterator方法
    并利用得到的item调用了三次next
    每次取到的值都不一样
    这也是一个非常有趣的方法 你只需要 next 他不需要下标 只会从第一个执行 一直执行到最后一个

    那么 就会有人想了
    我要是多调用了 next 会重新回去取第一条 还是报异常呢?
    在这里插入图片描述
    那当然是报异常啦

    那么就会有人想 外一我不知道集合的长度呢?
    这不是有size方法吗
    参考代码如下

    public static void main(String args[]) throws customException {
         Collection<String> list = new ArrayList<String>();
        list.add("你好");
        list.add("可爱的");
        list.add("小猫猫");
        Iterator<String> item = list.iterator();
        for(int i = 0;i < list.size();i++){
            System.out.println(item.next());
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    输出结果如下
    在这里插入图片描述
    确实迭代器中还有另一个方法

    public static void main(String args[]) throws customException {
       Collection<String> list = new ArrayList<String>();
        list.add("你好");
        list.add("可爱的");
        list.add("小猫猫");
        Iterator<String> item = list.iterator();
        if(item.hasNext()){
            System.out.println(item.next());
        }
        if(item.hasNext()){
            System.out.println(item.next());
        }
        if(item.hasNext()){
            System.out.println(item.next());
        }
        if(item.hasNext()){
            System.out.println(item.next());
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    输出结果如下
    在这里插入图片描述
    这时我们就看到 我们命名调用了 四次 但只执行了三次
    因为被hasNext函数拦截调了
    hasNext的作用就是判断对象还能不能继续next
    我们把之前的循环改一下

    public static void main(String args[]) throws customException {
        Collection<String> list = new ArrayList<String>();
        list.add("你好");
        list.add("可爱的");
        list.add("小猫猫");
        Iterator<String> item = list.iterator();
        while (item.hasNext()){
            System.out.println(item.next());
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    我们的循环停止条件就是item.hasNext()不再成立 表示对象next已经用完了
    运行结果如下
    在这里插入图片描述
    没有任何问题

    不过我还是觉得 直接ArrayList比较好用 因为可以直接通过get下标访问 就没这堆破事

    public static void main(String args[]) throws customException {
        ArrayList<String> list = new ArrayList<String>();
        list.add("你好");
        list.add("可爱的");
        list.add("小猫猫");
        for(int i = 0;i < list.size();i++){
            System.out.println(list.get(i));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

  • 相关阅读:
    【模型训练】YOLOv7车辆三类别检测
    TikTok选品精华 不能错过的TikTok选品3大原则+方法
    百度ueditor富文本插件插入视频问题汇总【必须收藏】
    P8 老哥私藏的:微服务与分布式系统实践详解,YYDS
    简析区块链节点运营的门槛、方法和难点
    前端技术栈总结
    创建 SAP Fiori Catalog 时遇到的 duplicate 记录的问题分析
    剑指 Offer 2022/6/29
    C++小型公司人员信息管理系统
    线束测试设备有哪些类型的设备,汽车线束测试仪推荐
  • 原文地址:https://blog.csdn.net/weixin_45966674/article/details/126376219