3.Collection集合的遍历方式


1.方式一:迭代器遍历概述

遍历就是一个一个的把容器中的元素访问一遍。

迭代器在Java中的代表是Iterator,迭代器是集合的专用遍历方式。

Collection集合获取迭代器

方法名称 说明
Iterator Iterator( ) 返回集合中的迭代器对象,该迭代器对象默认指向当前集合的0索引

Iterator中的常用方法

方法名称 说明
boolean hasNext 询问当前位置是否有元素存在,存在返回true,不存在返回false
E next( ) 获取当前位置的元素,并同时将迭代器对象移向下一个位置,注意防止取出越界

【代码示例】

public class CollectionDemo01 {
    public static void main(String[] args) {
        Collection lists = new ArrayList<>();
        lists.add("赵敏");
        lists.add("小昭");
        lists.add("素素");
        lists.add("灭绝");
        System.out.println(lists);

        // 1.得到当前集合的迭代器对象
        Iterator it = lists.iterator();
        /*
        String ele = it.next();   //先取值,后移位
        System.out.println(ele);
        System.out.println(it.next());
        System.out.println(it.next());
        System.out.println(it.next());
        //System.out.println(it.next());  // NoSuchElementException 出现无此元素异常的错误
         */

        // 2.定义while循环
        while(it.hasNext()){       //询问:有元素吗?  (最后没元素,返回false)
            String ele = it.next();  //取出元素,再后移
            System.out.println(ele);
        }
    }
}

运行结果:

[赵敏, 小昭, 素素, 灭绝]
赵敏
小昭
素素
灭绝

总结

(1)迭代器的默认位置在哪里?

● Iterator iteraotr( ):得到迭代器对象,默认指向当前集合的索引0

(2)迭代器如果去元素越界会出现什么问题?

● 会出现 NoSuchElementException 异常

2.方式二:foreach/增强for循环

增强for循环

● 增强for循环:既可以遍历集合,也可以遍历数组

● 它是JDK5之后出现的,其内部原理是一个Iterator迭代器,遍历集合相当于是迭代器的简化写法。

● 实现Iterable接口的类才可以使用迭代器和增强for,Collection接口已经实现了Iterable接口。

● 格式

for(元素数据类型 变量名 : 数组或Collection集合){
    //在此处使用变量即可,该变量就是元素
}

【举例说明】

Collection list = new ArrayList<>();
list.add("Java");
list.add("MySQL");
...
for(String ele : list){
System.out.println(ele);
}

【代码示例】遍历数组

public class CollectionDemo02 {
    public static void main(String[] args) {
        double[] scores = {100,99.5,59.5};
        for(double s : scores){
            System.out.println(s);
//            if(s == 59.5){
//                s = 100.0;   //修改无意义,不会影响数组的元素值
//            }
        }
        System.out.println(Arrays.toString(scores));
    }
}

3. 方式三:Lambda表达式

Lambda表达式遍历集合

● 得益于JDK 8开始的新技术Lambda表达式,提供了一种更简单、更直接的遍历集合的方式。

待续。。。。。。