lambda表达式 :
1. 必须要存在接口,并且接口仅有一个抽象方法。
2. 参数必须可推导, 也就是方法的参数或局部变量类型必须为Lambda对应的接口类型
-
语法糖:
(参数1,参数2...) -> { 方法实现的代码 }
普通的方法|构造方法( () - > {} );
形参: 形参如果没有,那么()可以不写。
->: 代表把参数传递给方法体。
{}: 代表了方法的实现( 方法体只有一行,{} 可以不写 )。
思维区别
-
面向对象的核心编程思维:
找合适的对象完成合适的事情。 -
函数式编程:
不在乎什么形式,只在乎做什么事情(更注重结果
)。
lambda的优势 :
- 可以很大程度上减少代码冗余,让代码看起来更简洁,更直观
lambda的使用实列 :
// 例 1 ===========================
List<String> strs = Arrays.asList("A","B","C");
// 普通方式
for (String s : strs) {
System.out.println(s);
}
// 遍历并输出结果,看起来是不是更简洁?
strs.forEach(s -> System.out.println(s));
// 例 2 (再写个明显的) ==================
// Comparator排序
List<Integer> list = Arrays.asList(3, 1, 4, 5, 2);
// 普通方式
list.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
});
// 使用Lambda表达式简化
list.sort((o1, o2) -> o1.compareTo(o2));
完 :
马上过年了,却没有开心的感觉 = _ =