lambda表达式的一些简单例子
x -> 3 * x
//接收一个数字类型的参数,返回其3倍的值
(x, y) -> x – y
//接收2个数字参数,并返回他们的差值
(String s) -> System.out.print(s)
//接受一个 string 对象,并在控制台打印,不返回任何值
Lambda在语法上通常包含了一个参数列表 (argument list), 一个箭头符号 -> 和函数体 (body) 。函数体可以是一个表达式也可以是一个声明语句。在表达式中, 函数体被计算并且返回。在函数体中的计算类似于在方法中,return关键字会把控制权交给匿名函数的调用者;break和continue只能使用在循环(loop)中;如果函数体需要计算出一个结果,函数内每一条逻辑路径必须提供一个返回值或者抛出异常。
在实际运用中使用lambda表达式
假设有一个玩家List ,程序员可以使用 for 语句来遍历
String[] atp = {"Mike", "Bob", "lily", "David", "Andy"};
List players = Arrays.asList(atp);
// 以前的循环方式
for (String player : players) {
System.out.print(player + "; ");
}
// 使用 lambda 表达式以及函数操作
players.forEach((player) -> System.out.print(player + "; "));
// 在 Java 8 中使用双冒号操作符
players.forEach(System.out::println);
使用Lambdas排序集合
String[] players = {"Mike", "Bob", "lily", "David", "Andy"};
//使用匿名内部类根据 name 排序 players
Arrays.sort(players, new Comparator() {
@Override
public int compare(String s1, String s2) {
return (s1.compareTo(s2));
}
});
//使用 lambda expression 排序 players
Comparator sortByName = (String s1, String s2) -> (s1.compareTo(s2));
Arrays.sort(players, sortByName);
//或者
Arrays.sort(players, (String s1, String s2) -> (s1.compareTo(s2)));