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());
}

运行结果如下
在这里插入图片描述
我们通过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());
    }
}

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

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());
    }
}

输出结果如下
在这里插入图片描述
这时我们就看到 我们命名调用了 四次 但只执行了三次
因为被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());
    }
}

我们的循环停止条件就是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));
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45966674/article/details/126376219