Java 8中增强For循环与forEach()方法学习

Java 8是https://ask.qcloudimg.com/http-save/yehe-1289394/zr4ip2dir2.jpegJava的一个重大版本,有人认为,虽然这些新特性领Java开发人员十分期待,但同时也需要花不少精力去学习。在这一小节中,我们将介绍Java 8的大部分新特性。

Lambda表达式(也称为闭包)是Java 8中最大和最令人期待的语言改变。它允许我们将函数当成参数传递给某个方法,或者把代码本身当作数据处理:函数式开发者非常熟悉这些概念。

很多JVM平台上的语言(Groovy、Scala等)从诞生之日就支持Lambda表达式,但是Java开发者没有选择,只能使用匿名内部类代替Lambda表达式。

Lambda的设计耗费了很多时间和很大的社区力量,最终找到一种折中的实现方案,可以实现简洁而紧凑的语言结构。

假设您有以下列表:

List<String> list = Arrays.asList("a", "b", "c", "d", "e", "f");

如果你想通过使用集合中的每个元素来做某事,有两种方法:

1)

list.forEach(s -> System.out.println(s));

2)

for(String s: list){

System.out.println(s);

}

以上两种方式都按顺序打印元素:

a

b

c

d

e

f

在这种特殊情况下,使用lambda表达式并不比使用增强型for循环更好。

使用forEach()方法的主要优点是在并行流上调用它时,在这种情况下,我们不需要编写代码来并行执行。

以下代码将并行执行:

list.parallelStream().forEach(s -> System.out.println(s));

输出可能是:

d

f

a

b

c

e

因此,只要并行执行可能会提高程序的性能,就应该将forEach()方法视为一个不错的选择。您可以随时为您的程序进行A / B测试,看看哪种方式表现更好。

var first_sceen__time = (+new Date());if ("" == 1 && document.getElementById('js_content')) { document.getElementById('js_content').addEventListener("selectstart",function(e){ e.preventDefault(); }); } (function(){ if (navigator.userAgent.indexOf("WindowsWechat") != -1){ var link = document.createElement('link'); var head = document.getElementsByTagName('head')[0]; link.rel = 'stylesheet'; link.type = 'text/css'; link.href = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg_new/winwx4516f8.css"; head.appendChild(link); } })();

原文发布于微信公众号 - Java学习网(javalearns)

原文发表时间:2019-01-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券