目录
1、为什引入lambda表达式:
lambda是一个可以传递的代码块,可以在以后执行一次或多次。lambda表达式允许把函数作为一个方法的参数(函数作为参数传递进方法中)
2、lambda表达式形式
一般形式为:参数,箭头(->)以及一个表达式。如果代码任务无法在一个表达式汇总表达,需要将代码放在{}中
(String first,String second)->{
if(first.length()<second.length())
return -1;
else if(first.length()>second.length())
return 1;
else return 0;
}
如果lambda表达式没有参数,也必须提供空括号,类似于无参方法:
()->{
for(int i=0;i<10;i++){
System.out.println(i);
}
}
如果lambda表达式可以推导出参数类型,可以不再声明类型 :
Comparator<String> comp=(first,second)->{
first.length()-second.length();
}
如果方法只有一个参数,而且这个参数的类型可以推导出来,也可以连括号都省略:
ActionListener listener=event->System.out.println("The time is"+new Date());
lambda表达式也可以不声明返回类型,lambda表达式的返回类型总是可以由上下文推导得出:
(String first,String second)->first.length()-second.length()
//这个表达式可以在需要int类型结果的上下文中使用
3、lambda表达式的优缺点
优点:1、简洁 2、非常容易并行计算 3、可能代表未来的编程趋势
缺点:1、如果不用并行计算,lambda表达式的计算速度一般不如for循环快(并行计算有时候也需要预热才会显示出效率优势)
2、不容易调试
3、如果其他人也没学过lambda表达式,代码不容易让其他语言的程序员看懂
4、lambda应用示例
import java.util.*;
public class mapentry {
public static void main(String[] args){
HashMap<Integer,Integer> map=new HashMap<>();
for(int i=0;i<10;i++){
map.put(i,i);
}
//这是一个用lambda表达式遍历map的示例
System.out.println("lambda");
map.forEach((Key,value)->{
System.out.println(Key+":"+value);
});
}