• 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

    在这里插入图片描述

  • 相关阅读:
    揭秘拼多多API接口的魅力与价值:商品查询,获取指定商品的详细信息,如价格、库存等
    电压参考芯片 LM285D-1.2 备忘
    使用【时间差】调整时间datetime.timedelta()
    深度学习算法在工业视觉落地的思考
    Kafka介绍、安装以及原理解析
    python基于PHP+MySQL的图书馆自习室预约占座系统
    maven配置nexus私服详解
    matlab相关(4)重复排列&矩阵列的拼接
    Java常见面试知识点汇总(2)
    Spark 3.0 - 7.LR 多分类实现影评预测电影评分与指标评测
  • 原文地址:https://blog.csdn.net/weixin_45966674/article/details/126376219