Lambda 表达式

Lambda 表达式,也可称为闭包, 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

使用 Lambda 表达式可以使代码变的更加简洁紧凑。

Lambda 的语法:

  • (参数) -> expression

  • (参数) -> { statements; }

Lambda 的语法特性

  1. 使用->分割 Lambda 参数和处理语句
  2. 可选类型声明(不需要声明参数类型,编译器可统一识别参数值)
  3. 可选参数圆括号(如果只有一个参数,可以不加圆括号,多个参数必须加圆括号)
  4. 可选花括号(一个语句可以不加花括号,多个参数需要花括号)
  5. 返回值可选(如果只有一个表达式,可以自动返回,大括号需要指定明表达式返回了一个数值)

变量作用域

Lambda 中引用的外部变量必须为 final 类型,内部声明的变量不可修改,内部声明的变量名称不能与外部变量名相同。

函数接口:

只有一个抽象函数的接口,函数接口使用注解 @FunctionalInterface 进行声明(注解声明不是必须的,如果没有注解,也是只有一个抽象函数,依旧会被认为是函数接口)多一个或者少一个抽象函数都不能定义为函数接口,如果使用了函数接口注解又不止一个抽象函数,那么编译器会拒绝编译。函数接口在使用时候可以隐式的转换成 Lambda 表达式。

定义函数接口

@FunctionalInterface
public interface FunctionInterfaceDemo {
    void say(String name, String college);
}

测试代码:

public static void main(String[] args) {
        FunctionInterfaceDemo demo =  (name,college)-> System.out.println("我叫" + name + ",毕业于" + college + "。");
        demo.say("叶辰","北京大学");
    }

运行结果:

在这里插入图片描述

简单应用

流式操作去重和过滤

public static void main(String[] args) {
        List<String> books = Arrays.asList("book1", "book2", "book3", "book1");
        System.out.println("去重遍历结果:");
        // 去重遍历
        books.stream().distinct().forEach(System.out::println);

        System.out.println("去重,并过滤掉book3 遍历结果:");
        // 去重,并过滤掉book3 再遍历
        books.stream().distinct().filter(skill -> !("book3").equals(skill)).forEach(System.out::println);
    }

运行结果:

在这里插入图片描述

参考资料: 菜鸟教程-Java 8 Lambda 表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值