lambda表达式
一、为什么引入一个lambda表达式
lambda表达式是一个可传递的代码块,可以在以后执行一次或多次。
1,如果代码想要完成的计算无法放在一个表达式中就可以像写方法一样,把这些代码放在{}中。
2,即使lambda表达式没有参数,仍然要提供空括号。
3,如果可以推导一个lambda表达式的参数类型,则可以忽略期其类型。
4,无需指定lambda表达式的返回类型。lambda表达式的返回类型总会由上下文推导得出。
5,如果一个lambda表达式只在某些分支返回一个值,而另外一些分支不返回值,这是不合法的。
二、一些lambda的小列子
2.1 定制比较器
public class Test {
public static void main(String[] args) {
String[] strings = {"Hello","nihao"};
// 传统写法
Arrays.sort(strings, new LengthComparator());
// lambda写法
Arrays.sort(strings, (first,second)->first.length() - second.length());
}
}
class LengthComparator implements Comparator<String> {
@Override
public int compare(String first, String second){
return first.length() - second.length();
}
}
可以看出(first,second)可以不用指定参数类型,可以通过其前面的参数strings推导出。
三、函数式接口
对于只有一个抽象方法的接口,需要这种接口的对象时,就可以提供一个lambda表达式。这种接口称为函数式接口(functional interface)。
网友评论