java8遍历集合_Java8集合遍历forEach()方法

本文介绍了Java8中集合遍历的新方法forEach(),对比了传统for循环遍历,展示了如何使用forEach()遍历List、HashMap以及Stream,并通过Lambda表达式进行条件过滤。
摘要由CSDN通过智能技术生成

1724f6affd3aacb7581c6aec6705fd4a.png

Java8为所有的集合添加了一个新的方法forEach(),该方法只读形式遍历集合所有的元素为每一个元素执行一个动作

测试案例

b392082dd47bf407575f017fe26add28.png

package com.july.test.controller;import java.util.Arrays;/*** @author zqk* @since 2020/2/6*/public class Test {public static void main(String[] args) {Arrays.asList("1","2","3").forEach(System.out::println);}}

上面这段代码是,我们创建一个List集合,然后使用forEach()方法遍历集合的每一个元素,然后把元素传递给System.out.println()方法进行打印。

对于这个功能,我们如果使用普通for()遍历会是如下代码

普通for循环遍历

29dabf8cbe852ecf9abcc61912c7ffb5.png

package com.july.test.controller;import java.util.Arrays;import java.util.List;/*** @author zqk* @since 2020/2/6*/public class Test {public static void main(String[] args) {//Arrays.asList("1","2","3").forEach(System.out::println);List strings = Arrays.asList("1","2","3");for (String string : strings) {System.out.println(string);}}}

forEach()方法

b4bc4dc03847aaf056fe9842740c1def.png

forEach()方法是Java8为所有的集合新增的方法,该方法定义在java.lang.Iterable接口中。

java.lang.Iterable接口是在Java5版本时引入的,其目的就是为实现该语句的对象提供for-each语句。意思就是所有实现该接口的对象都可以使用for语句进行迭代。

forEach方法原型如下:

default void forEache(Consumersuper T action>)

从上面的原型可以看出,forEach()方法是Iterable的默认方法,因此所有的子类都不用去实现。forEach()类似于以下代码结构:

for(T t:this){action.accept(t);}

forEach()迭代一个哈希表

551dd922b9101f7b1476b7570a19ccfe.png

接下来我们使用forEach()方法和Lambda表达式来迭代一个哈希表,代码如下:

package com.july.test.controller;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;/*** @author zqk* @since 2020/2/6*/public class Test {public static void main(String[] args) {//Arrays.asList("1","2","3").forEach(System.out::println);/*List strings = Arrays.asList("1","2","3");for (String string : strings) {System.out.println(string);}*/Map stringMap = new HashMap<>();stringMap.put("name","zengxueqi");stringMap.put("password","123456");stringMap.put("sex","woman");stringMap.put("tel","19913146666");//forEach遍历stringMap.forEach((s, s2) -> System.out.println("label:" + s + ",value:" + s2));stringMap.forEach((s, s2) -> {if(s2.equals("zengxueqi")){System.out.println("label:" + s);}});}}运行结果:Connected to the target VM, address: '127.0.0.1:61131', transport: 'socket'label:password,value:123456label:sex,value:womanlabel:name,value:zengxueqilabel:tel,value:19913146666label:nameDisconnected from the target VM, address: '127.0.0.1:61131', transport: 'socket'Process finished with exit code 0

forEach()迭代一个流

19e0e3826e61573f877f67eca237a781.png

接下来我们使用forEach()方法迭代一个流,然后输出流中的所有元素,代码如下:

package com.july.test.controller;import java.util.Arrays;/*** @author zqk* @since 2020/2/6*/public class Test {public static void main(String[] args) {Arrays.asList("1","2","3").stream().filter(s -> s.contains("1")).forEach(System.out::println);}}运行结果:Connected to the target VM, address: '127.0.0.1:61370', transport: 'socket'1Disconnected from the target VM, address: '127.0.0.1:61370', transport: 'socket'Process finished with exit code 0

end

程序员:july

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值