lambda表达式是java这些年来最激动的一个变化了 ,很长时间再回过头来学习java基础知识了。
今天心血来潮,准备系统的学习下jdk1.8的lambda表达式和函数式接口。
1.什么是lambda表达式?为什么引入lambda表达式?
lambda是一个可传递的代码块,为了让我们的代码可读性更好简洁优雅。废话不多说,具体看个栗子。
最经典的就是排序了,这也是网上比较流行的解释lambda表达式的栗子了。
import java.util.Arrays;
import java.util.Date;
import javax.swing.JOptionPane;
import javax.swing.Timer;
public class Lambda {
public static void main(String[] args){
String[] planets = new String[]{"Merdred", "sunday", "Vnues", "earth", "mars", "Jupiter","Netesetserfs"};
//排序前
System.out.println(Arrays.toString(planets));
//按字母排序后
Arrays.sort(planets);
System.out.println(Arrays.toString(planets));
//按单词长度排序后,使用lambda表达式
Arrays.sort(planets, (first, second) -> first.length()-second.length());
System.out.println(Arrays.toString(planets));
//定时器调用,使用lambada表达式
Timer t = new Timer(1000, event-> System.out.println(new Date()));
t.start();
JOptionPane.showConfirmDialog(null, "quit?");
System.exit(0);
}
}
注意到上面创建timer对象时甚至直接将代码块转换成了Timer对象的ActionListener接口,这就是lambda表达式的魅力所在了。