JDK8-Lambda 表达式

Lambda 表达式代替函数式接口实例

函数式接口:只有一个抽象方法的接口(由@FunctionalInterface修饰不会报错

//语法格式如下:
(parameters) -> expression
或
(parameters) ->{ statements; }

注意

1. 参数parameters名必须与Lambda表达式外的任何变量不重名
2. expression语句只能使用parameters和Lambda表达式外的final变量
JDK8后如果访问了外部变量则会给此变量自动添加final,这个变量以后就不能修改,匿名重写也同样不能访问!! 一个道理)
3. 右边只有一句语句时可以省略大括号和return

lambda表达式的重要特征:

上联:左右遇一括号省(左边参数是一个就可以省略括号,右边参数是一句话就可以省略大括号)
下联:左侧推断类型省(左侧没必要写参数类型)
横批:能省则省

// 1. 不需要参数,返回值为 5  
() -> 5  
  
// 2. 接收一个参数(数字类型),返回其2倍的值  
x -> 2 * x  
  
// 3. 接受2个参数(数字),并返回他们的差值  
(x, y) -> x – y  
  
// 4. 接收2个int型整数,返回他们的和  
(int x, int y) -> x + y  
  
// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)  
(String s) -> System.out.print(s)

就直接这样用:(完全代替函数式接口实例)
在这里插入图片描述

应用

Lambda 表达式代替函数式接口实例!
只需要直接实现接口方法的parameters参数和expression返回值表达式!

/**
* 以二维数组的第二个值进行比较,从大到小排序二维数组
*/
//public static <T> void sort(T[] a, Comparator<? super T> c)
//int[][] boxTypes
Arrays.sort(boxTypes, (x, y) -> (y[1] - x[1]));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值