Collection集合的遍历方式
方式一:迭代器
-
遍历就是一个一个的把容器中的元素访问一遍。
-
迭代器在Java中的代表是Iterator,迭代器是集合的专用遍历方式。
-
Collection集合获取迭代器
-
lterator中的常用方法
-
迭代器执行流程
-
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()){
String ele = it.next();
System.out.println(ele);
} -
迭代器的默认位置在哪里?
Iterator<E> iterator(): 得到迭代器对象,默认指向当前集合的索引0。
-
迭代器如果取元素越界会出现什么问题?
会出现NoSuchElementException异常。
-
方式二:foreach/增强for循环
-
增强for循环:既可以遍历集合也可以遍历数组
-
它是]DK5之后出现的,其内部原理是一个lterator迭代器,遍历集合相当于是迭代器的简化写法
-
实现Iterable接口的类才可以使用迭代器和增强for,Collection接口已经实现了Iterable接口。
-
格式:
for(元素数据类型 变量名 :数组或者Collection集合){
举例说明
//在此处使用变量即可,该变量就是元素
} -
举例说明:
Collection<String> list = new ArrayList<>();
for(String ele : list) !
System.outprintln(ele);
} -
增强for修改变量
-
增强for可以遍历哪些容器?
-
既可以遍历集合也可以遍历数组。
-
-
增强for的关键是记住它的遍历格式
for(元素数据类型 变量名: 数组或者Collection集合){
//在此处使用变量即可,该变量就是元素
} -
代码:
double[] scores = {100 , 99.5 , 59.5};
for (double score : scores) {
System.out.println(score);
// if(score == 59.5 ){
// score = 100.0;
// } //修改不了,因为score是拷贝集合中的元素,改score没用,集合中元素不变
}
System.out.println(Arrays.toString(scores));
方式三:lambda表达式
-
lambda表达式遍历集合
-
代码:
Collection<String> lists = new ArrayList<>();
lists.add("网文");
lists.add("王文");
lists.add("网军");
lists.add("网文军");
//[网文,王文,网军,网文军]
// ele
// lists.forEach(new Consumer<String>() {
// @Override
// public void accept(String s) {
// System.out.println(s);
// }
// });
// lists.forEach(s-> {
// System.out.println(s);
// });
// lists.forEach(s-> System.out.println(s) );
lists.forEach(System.out::println );