1:作用
代替匿名内部类、各种回调,简化代码。在编译时还是会将lamda表达式编译为匿名内部类。
2:格式
2.1 多参数
(x1,x2,....) -> { 表达式1;表达式2;.......};
2.2 单参数
x1 -> {表达式1;表达式2;......}
当参数只有1个时可以省略左边的小括号。
2.4 单参数 单语句
x1 -> 表达式1
单语句时可以省略大括号
2.5 例
排序
List<String> strList = Arrays.asList(new String[] {"a","d","c"});
//匿名内部类写法
Collections.sort(strList, new Comparator<String>() {
@override
public int compare(String str1, String str2) {
return Str1.comparaTo(str2);
}
});
//lamda表达式写法
collections.sort(list, (str1,str2) -> str1.comparaTo(str2));
//方法引用输出结果
list.foreach(system.out::println);
3 方法引用
格式
Class or instance :: method
例
list.foreach(system.out::println) //一次打印list中的数据
4 构造器引用
格式
ClassName::new
把lambda表达式的参数当成ClassName构造器的参数 。例如BigDecimal::new等同于x->new BigDecimal(x)。