【Java -- Lambda 表达式】

概述

Lambda 表达式是 JDK8 引入的新特性,是一个匿名函数。Lambda 表达式允许把一个函数作为另一个函数的参数(将一个函数作为参数传入另一个函数),可以使代码更简洁、灵活。

它有以下特点:

  • Lambda 表达式并不能独立执行,实际上它用于实现函数式接口中定义的唯一抽象方法;
  • 使用 Lambda 表达式会创建实现该函数式接口的匿名类的实例,可以将其看作一个对象,可用作参数传递以及返回值接收,相比使用匿名内部类来实现,更为简洁;

其语法格式如下:

(参数列表) -> 表达式;(参数列表) -> {代码块}

函数式接口

函数式接口指的是有且仅有一个抽象方法的接口(可以有 default 方法和 static 方法),适用于函数式编程,也就是适用于 lambda 表达式的接口。

可以使用 @FunctionalInterface 注解来表明该接口为一个函数式接口:

@FunctionalInterface
pulblic interface FunctionalInterface {
	定义抽象方法;
}

使用该注解来定义接口时,编译器会检查是否满足函数式接口条件,也就是检查是否有且仅有一个抽象方法,若不是则编译错误。即便不使用该注解,只要接口只含有一个抽象方法,它就是一个函数式接口。

Lambda 表达式的使用

案例:对二维数组进行按行排序,行首元素较小这排前,行首元素较大者排后。

方法一,利用匿名类实现

Arrays.sort(nums, new Comparator<int[]>() {
       @Override
       public int compare(int[] o1, int[] o2) {
           return (o1[0] == o2[0]) ? 0 : (o1[0] - o2[0]);
       }
});

方法二,利用 Lambda 表达式

Arrays.sort(nums, (o1, o2) -> (o1[0] == o2[0] ? 0 : o1[0] - o2[0]));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值