3.Collection集合的遍历方式
1.方式一:迭代器遍历概述
遍历就是一个一个的把容器中的元素访问一遍。
迭代器在Java中的代表是Iterator,迭代器是集合的专用遍历方式。
Collection集合获取迭代器
方法名称 | 说明 |
Iterator<E> Iterator( ) | 返回集合中的迭代器对象,该迭代器对象默认指向当前集合的0索引 |
Iterator中的常用方法
方法名称 | 说明 |
boolean hasNext | 询问当前位置是否有元素存在,存在返回true,不存在返回false |
E next( ) | 获取当前位置的元素,并同时将迭代器对象移向下一个位置,注意防止取出越界 |
【代码示例】
public class CollectionDemo01 {
public static void main(String[] args) {
Collection<String> lists = new ArrayList<>();
lists.add("赵敏");
lists.add("小昭");
lists.add("素素");
lists.add("灭绝");
System.out.println(lists);
// 1.得到当前集合的迭代器对象
Iterator<String> 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<E> iteraotr( ):得到迭代器对象,默认指向当前集合的索引0
(2)迭代器如果去元素越界会出现什么问题?
● 会出现 NoSuchElementException 异常
2.方式二:foreach/增强for循环
增强for循环
● 增强for循环:既可以遍历集合,也可以遍历数组
● 它是JDK5之后出现的,其内部原理是一个Iterator迭代器,遍历集合相当于是迭代器的简化写法。
● 实现Iterable接口的类才可以使用迭代器和增强for,Collection接口已经实现了Iterable接口。
● 格式
for(元素数据类型 变量名 : 数组或Collection集合){
//在此处使用变量即可,该变量就是元素
}
【举例说明】
Collection<String> 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表达式,提供了一种更简单、更直接的遍历集合的方式。
待续。。。。。。