【Java】JDK1.8新特性-lambda表达式

1.lamdba表达式

1.1 lamdba表达式简介

lamdba是一个匿名函数,我们可以把lamdba表达式理解为是一段可以传递的代码(让数据可以像数据一样进行传递)。在代码中使用lamdba表达式可以使代码更加简洁灵活;

注意:lamdba表达式的实质就是作为函数式接口的实例,所以我们想要使用lamdba表达式的前提就是这个接口只有一个接口方法;

1.2 使用示例

Comparator接口只有一个抽象方法 compare(T var1, T var 2);

public interface Comparator<T> {
    int compare(T var1, T var2);
}
//使用方法
Comparator<integer> comparator = (o1, o2) -> o1.compare(o2);
1.3 lambda语法

(o1, o2)->Integer.compare(o1, o2);
->: lambda操作符 或者 箭头操作符
左边: lambda形参列表。也就是接口中抽象方法的形参列表;
右边: lambda体,也就是重写抽象方法得到方法体;

示例一:接口抽象方法无参无返回值

public static void main(String[] args) {
	//Runnable类中的run方法,无参无返回值
	Runnable runnable = () -> System.out.println("示例一:无参无返回值");
	runnable.run();
}

示例二:接口抽象方法有参无返回值

public static void main(String[] args) {
	//Consumer<T>类中的accept方法,有参无返回值
	Consumer<String> consumer = (str) -> System.out.println(str);
	consumer.accept("示例二:有参无返回值"); 
}

示例三: 抽象方法只有一个参数时可以省略参数的小括号

public static void main(String[] args) {
	Consumer<String> consumer = str -> System.out.println(Str);
	consumer.accept("示例三:抽象方法只有一个参数时可以省略参数的小括号");
}

示例四:抽象方法有两个或两个以上且有返回值,且方法体有多条语句

public static void main(String[] args) {
	Comparator<Integer> comparator = (o1, o2) -> {
		System.out.println("示例四:抽象方法有两个或两个以上且有返回值,且方法体有多条语句")return o1.compareTo(o1);
	};
}

示例五:当抽象方法的实现只有一条语句时,return与大括号都可以省略

public static void main(String[] args) {
	Comparator<Integer> comparator = (o1, o2) -> Integer.compara(o1, o2);
	System.out.println(comparator.compare(1, 2));
}
1.4 函数式接口

如果接口中只声明了一个抽象方法,那么这个接口就被称为函数式接口。
我们可以在接口上使用@FunctionalInterfance主结,这样可以用来标识该接口是一个函数式接口;
在java.utile.function包下定义了一些比较好用的函数式接口:Function、Consumer、Supplier、Predicate等;

![在这里插入图片描述](https://img-blog.csdnimg.cn/7e4b3f7f0e7d4374b3136a3db48ec317.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/b2f28e460c2843e296d632f2a79d1828.png#pic_center)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值