Java 8是Java的一个重大版本,有人认为,虽然这些新特性领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测试,看看哪种方式表现更好。