二、增强for遍历
-
增强for的底层就是迭代器,为了简化迭代器的代码书写的。
-
它是JDK5之后出现的,其内部原理就是一个Iterator迭代器
-
所有的单列表集合和数组才能用增强for进行遍历
-
格式:
for(元素的数据类型 变量名 : 数组或者集合){ } for(String s : list){ System.out.println(s); }
案例:
package com.mycollection; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class A06_CollectionDemo6 { public static void main(String[] args) { /* Collection系列集合三种通用遍历方式: 1.迭代器遍历 2.增强for循环 3.lambda表达式遍历 增强for循环格式: for(元素的数据类型 变量名 : 集合/数组){ } 快速生成方式:集合名字+for 回车 */ //1.创建集合并添加元素 Collection<String> coll = new ArrayList<>(); coll.add("zhangsan"); coll.add("lisi"); coll.add("wangwu"); //2.利用增强for进行遍历 //注意点: //s其实就是一个第三方变量,在循环的过程中会依次表示集合中的每一个数据。 for (String s : coll) { System.out.println(s); } //细节:修改增强for中的变量,不会改变集合中原本的数据 for (String s : coll) { s="qqq"; } System.out.println(coll); } }
运行结果:
三 、lambda表达式遍历
-
得益于JDK8新技术Lambda表达式,提供了一种更简单、更直接的遍历集合的方式。
方法名称 说明 default void forEach(Consumer<? super T> action): 结合lambda遍历集合 案例:
package com.mycollection; import java.util.ArrayList; import java.util.Collection; import java.util.function.Consumer; public class A07_CollectionDemo7 { public static void main(String[] args) { /* Collection系列集合三种通用遍历方式: 1.迭代器遍历 2.增强for循环 3.lambda表达式遍历 lambda表达式: default void forEach(Consumer <? super T> action): consumer n.消费者,顾客,用户;食用者,使用者,消耗者 */ //1.创建集合并添加元素 Collection<String> coll = new ArrayList<>(); coll.add("zhangsan"); coll.add("lisi"); coll.add("wangwu"); //2.利用匿名类内部类形式 //底层原理 //其实也会自己遍历集合,依次得到每一个元素 //把得到的每个元素,传递到下面的accept //s依次表示集合中的每个元素。 coll.forEach(new Consumer<String>() { //new一个对象 @Override public void accept(String s) { System.out.println(s); } }); //()->{} 形参->方法体 coll.forEach((String s) -> {System.out.println(s);}); coll.forEach(s -> System.out.println(s)); } }
运行结果:
四、总结
- Collection 是单列集合的顶层接口,所有的方法被List和Set系列集合共享。
- 常见成员方法:
- add、clear、remove、contains、isEmpty、size
- 三种通用的遍历方式:
- 迭代器:在遍历的过程中需要删除元素,请使用迭代器。
- 增强for、Lambda:仅仅想遍历,那么使用增强for、Lambda表达式。