java的lambda表达式

本文介绍了Java 1.8引入的lambda表达式,它使得代码更加简洁。lambda表达式通常与函数式接口配合使用,强调传递函数而不是对象。文中通过实例展示了如何使用lambda简化方法定义,如实现double类型数据的相加,以及如何利用lambda简化数组排序。此外,还提到了使用双冒号 (::) 运算符来直接引用静态方法,进一步压缩代码。
摘要由CSDN通过智能技术生成

java中的lambda表达式

lambda表达式是java1.8版本的新特性,与函数式编程的思想相关。可以简化java代码,一般情况下与接口相配合使用
函数式编程与面向oop的思想相似
oop更关注类与类之间的关系,用对象建立连接,函数式编程传递的是函数,在java中通过变量去创建一个lambda表达式,返回出一个结果给变量或者产生一定的 功能。

语法格式

(parameters) -> expression
或者
(parameters) ->{ statements; }
以下是表达式的重要特征

  1. 当参数有具体的变量类型时,可以不用具体声明变量类型
  2. 当参数有且仅有一个时,可以不用加括号 ,但当有多个变量时,需要加圆括号
  3. 方法体内仅有一句代码时,可省略大括号
  4. 方法的表达式返回值仅有一个时,可以省略return

代码实例

以下方法使用lambda表达式实现两个double类型数据相加,参数a,b的类型确定,故省略类型声明,方法体内仅有一个表达式,省略大括号,和return。

public class ShowLambda {
    public static void main(String[] args) {
        NumberControl addTwoDouble = (a, b)-> a+b;
        System.out.println(addTwoDouble.add(3,56));
    }
}
@FunctionalInterface //当接口中仅有一个抽象方法时,可以使用此注解
interface NumberControl{
    double add(double a, double b);
}

更简洁的写法

本实例以数组排序为例,调用Arrays的sort内置方法

之前的写法

public class ShowLambda {
    public static void main(String[] args) {
        // 实现之前先重写抽象方法
        SortMyArray s = array -> Arrays.sort(array); //之前的写法
        // 声明数组
        int[] array = {1,4,6,78,9,0};
        s.sortArray(array);
        // 调用toString方法显示数组
        System.out.println(Arrays.toString(array));
    }
}

@FunctionalInterface  //当接口中仅有一个抽象方法时,可以使用此注解
interface SortMyArray{
    void sortArray(int[] args);

简洁版

sort方法需要一个 int类型的数组,抽象方法也需要一个int类型的数组,参数自动对应。使用::进行静态方法的传递。

import java.util.Arrays;

public class ShowLambda {
    public static void main(String[] args) {
        // 实现之前先重写抽象方法
        // 方法体只有一句,并且直接操作这个参数,调用了已有类中的静态方法
        // 此时可以省略参数不写,直接调用静态方法
        // SortMyArray s = array -> Arrays.sort(array); //之前的写法
        SortMyArray s = Arrays::sort; //省略后的写法
        // 声明数组
        int[] array = {1,4,6,78,9,0};
        s.sortArray(array);
        // 调用toString方法显示数组
        System.out.println(Arrays.toString(array));
    }
}

@FunctionalInterface  //当接口中仅有一个抽象方法时,可以使用此注解
interface SortMyArray{
    void sortArray(int[] args);

使用lambda可以极大的简化我们的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值