函数式接口和Lambda表达式

1.函数式接口与lambda表达式

什么是函数式接口?

有且只有一个抽象方法的接口,可以有default,static等关键字修饰的方法,以及重写超类Object的equals等方法,就可以称之为函数式接口。

作用:

  • 代码简介,开发迅速

  • 方便函数式编程

  • 非常容易进行并行计算

  • Java引入Lambda,改善了集合操作(引入Stream API),并可以利用到Lambda表达式的延后性

辨别:

函数式接口有functioninterfa修饰,当自己创建函数式接口时也记得加,这样当你书写的接口不是函数式接口时会标红提醒。

Lambda表达式

Lambda表达式可以看作一个匿名函数,允许把函数作为一个方法的参数,使用lambda表达式可以使代码更加简洁紧凑,可以作为方法的参数和返回值。

组成:

(parameters) -> expression 或 (parameters) ->{ statements; }

1.(paramaters):使用的是函数接口的参数列表,参数可以声明类型也可以不写,当只有一个参数时,可以将小括号省略。
2.->:将参数传递给后面的方法体。
3方法体:可以是表达式和代码块,是函数式接口里面方法的实现。

使用

 public class Test01 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("sss");
        System.out.println(isNull(a -> {
            if (list.size() == 0) {
                return true;
            }
            return false;
        }, list)); }

    static boolean isNull(Predicate predicate, List list){
        return predicate.test(list);
    }
    static boolean isPrime(Predicate predicate,Integer s){
        return predicate.test(s);
    }    

变量捕获

lambda表达式智能引用标记了final的外层局部变量,在lambda内部修改定义在域外的局部变量,否则会发生错误

Lambda在集合中的应用

在这里插入图片描述

Collection接口

ArrayList<String> list = new ArrayList();
      list.add("which");
      list.add("cat");
      list.add("cd");
      list.add("ls");
      list.forEach(s -> System.out.println(s));

结果
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值