lambda表达式

lambda表达式是java8的新特性,lambda表达式支持将代码块作为方法参数,lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口的实例。
lambda表达式的主要作用就是代替匿名内部类的繁琐语法,它由三部分组成:
1.形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。
2.箭头(->)必须通过英文中划线和大于符号组成。
3代码块。如果代码块只包含一条语句,lambda表达式允许省略代码块的花括号,那么这条语句就不要用花括号表示语句结束。lambda代码块只有一条return语句,甚至可以省略return关键字。
lambda表达式与函数式接口:
lambda表达式的目标类型必须是“函数是接口”

Runnable r = () ->{
    for(var i=0;i<100;i++)
        {
            System.out.println();
        }
}

Runnable是java本身提供的一个函数式接口。
lambda表达式实现的是匿名方法———因此它只能实现特定的函数式接口中的唯一方法。这意味着Lambda表达式有如下两个限制。
1.lambda表达式的目标类型必须是明确的函数式接口。
2.lambda表达式只能为函数式接口创建对象。Lambda表达式只能实现一个方法,因此它只能为只有一个抽象方法的接口创建对象。
lambda表达式调用Arrays的类方法

		public class lambdaArrays
{
    var arr1 = new String[] {"java","fkava","fkit","ios","android"};
    Arrays.parallelSort(arr1,(o1,o2)-o1.length - o2.length());
    System.out.println(Arrays.toString(arr1));
    var arr2 = new int[] {3,-4,25,16,30,18};
    Arrays.parallelPrefix(arr2,(left,right)->left*right);//left代表数组中前一个索引处的元素,right代表数组中当前索引处的元素
    System.out.println(Arrays.toString(arr2));
    var arr3 = new long[5];
    Arrays.parallelAetAll(arr3,operand ->operand * 5);//operand代表正在计算的元素索引
    System.out.println(Arrays.toString(arr3));
}

(o1,o2)-o1.length - o2.length()的lambda表达式的目标类型是Comparator,该Comparator指定了判断字符串大小的标准:字符串越长,即可认为该字符串越大。
(left,right)->left*right的lambda表达式目标类型IntBinaryOperate,该对象将会根据前后两个元素来计算当前元素的值。
operand ->operand * 5的lambda表达式的目标类型是IntToLongFunction,该对象将会根据元素的索引来计算当前元素的值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值