• 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

    在这里插入图片描述

  • 相关阅读:
    binder通信实现
    什么是VR虚拟现实体验店|VR主题馆加盟|元宇宙文化旅游
    java并发编程中的四个关键字:ThreadLocal、Volatile、Synchronized和Atomic
    CFCA证书——基于SM2/3算法的安全信任
    辰视冯良炳博士将于ITES机器视觉与机器人创新应用大讲台开讲
    毫秒时间戳转换为字符串
    解决仪器掉线备忘
    【外企面试】Java技术管理与架构面试参考
    计算机毕业设计 基于Web的视频及游戏管理平台的设计与实现 Java实战项目 附源码+文档+视频讲解
    计算机毕业设计Java餐饮掌上设备点餐系统(源码+系统+mysql数据库+lw文档)
  • 原文地址:https://blog.csdn.net/weixin_45966674/article/details/126376219