Java教程

Java的Lambda表达式和函数式接口

本文主要是介绍Java的Lambda表达式和函数式接口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Lambda表达式

简介

Lambda 是一个 匿名函数,我们可以把 Lambda表达式理解为是 一段可以传递的 代码(将代码像数据一样进行传递)。可以替换匿名内部类,函数式接口。

Lambda 是jdk1.8后有的。

例如:匿名内部类  VS   Lambda表达式

//原来使用匿名内部类
TreeSet<Person> ts = new TreeSet<Person>(new Comparator<Person>() {
	@Override
	public int compare(Person o1, Person o2) {
		return o1.getName().compareTo(o2.getName());
	}
});
//JDK1.8后可以使用Lambda
Comparator<Person> com = (x,y)->x.getName().compareTo(y.getName());
TreeSet<Person> ts2 = new TreeSet<Person>(com);

 

//匿名内部类                                           
Runnable r1 = new Runnable() {                    
	@Override                                     
	public void run() {                           
		System.out.println("run...");             
	}                                             
};                                                
//Lambda表达式                                       
Runnable r2 = () -> System.out.println("run..."); 

语法

Lambda表达式:Java8以后,引入了“->”操作符
    “->”左侧:参数列表
    “->”右侧:所需要执行的功能,即Lambda体

语法格式一:无参数无返回值
	()-> System.out.println("Hello Lambda ");
语法格式二: 一个参数,无返回
	//x表示变量,变量名x任意
	(x) -> System.out.println(x);
	//只有一个参数时,()可以省略
	x -> System.out.println(x);
语法格式三:有两个以上的参数,有返回值,并且 Lambda 体中有多条语句
	Comparator<Integer> com = (x, y) -> {
		System.out.println("函数式接口");
		return Integer.compare(x, y);
	};
语法格式四:若 Lambda 体中只有一条语句, return 和 大括号都可以省略不写
		Comparator<Integer> com = (x, y) -> Integer.compare(x, y);

语法格式五:Lambda 表达式的参数列表的数据类型可以省略不写,因为JVM编译器通过上下文推断出,数据类型,即“类型推断”
		(Integer x, Integer y) -> Integer.compare(x, y);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

********************************

这篇关于Java的Lambda表达式和函数式接口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!