Lambda表达式是Java SE 8中一个重要的新特性,初学时看着就很简短,其实Lambda表达式也就是一个语法糖,让你使用更少更简短的代码实现之前一样的功能。可以将其形象的理解为是一种速记,在你需要的地方你可以将方法以这种速记的形式写下。Lambda表达式就和方法一样,它提供了一个参数列表和使用这些参数的代码块或表达式。
Lambda表达式的结构
- 基本语法:(parameters) -> expression或(parameters) -> (statements;)
- 一个lambda表达式可以有零个或多个参数
- 可以明确声明参数的类型,也可以根据上下文推断,例如:(int a)和(a)的效果相同
- 当只有一个参数且其类型可以根据上下文推导时圆括号可省略,例如:a -> return a*2
- Lambda表达式主题可包含零条或多条语句
- Lambda表达式的主体只包含一条语句时,{}可省略
举例
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 3, 6, 14, 24, 2, 10);
System.out.println("print all numbers:");
list.forEach(System.out::println);
list.stream().sorted((o1, o2) -> o1.compareTo(o2)).forEach(System.out::println);
list.stream().filter(n -> n % 2 == 0).forEach(System.out::println);
int sum = list.stream().map(x -> x * x).reduce((x, y) -> x + y).get();
System.out.println(sum);
}
}
结果
print all numbers:
1
3
6
14
24
2
10
1
2
3
6
10
14
24
6
14
24
2
10
922
网友评论