简述Lambda

这篇博客介绍了Java8中的Lambda表达式,包括其结构、函数式接口、基础语法、四大核心接口Consumer、Supplier、Function和Predicate的使用,以及方法引用和构造器引用的概念。Lambda表达式简化了代码,使得函数作为第一类对象进行传递成为可能。
摘要由CSDN通过智能技术生成

初识Lambda

可以把lambda表达式理解为是可以传递匿名函数的一种方式:他没有名称,但有参数列表,函数主体,返回类型等

Lambda核心思想:

  1. 确认 Lamda 表达式的类型

  2. 找到要实现的方法

  3. 实现这个方法

一、Lambda 表达式结构:

Java8 中引入了一个新的操作符 “->” , 该操作符称为箭头操作符或 Lambda 操作符,该操作符将 Lambda 表达式分为两部分:

左侧:函数式接口中抽象方法的参数列表
右侧:对函数式接口中抽象方法的实现,即 Lambda 体

小例子

(String s) -> s.length   //返回int,其中隐含了return
(Apple a) -> a.getWight() > 100 //返回boolean判断a是否大于150

二、函数式接口:

接口中只有一个抽象方法的接口,称为“函数式接口”。 使用了 @FunctionalInterface 注解的接口,说明该接口必须是函数式接口

@FunctionalInterface
public interface Comparator<T> {
   
	int compare(T o1, T o2);
}

@FunctionalInterface
public interface Runnable {
   
    public abstract void run();
}

三、Lambda 表达式的基础语法:

1)无参数,无返回值

() -> System.out.println()

public void test1(){
   
        Runnable r1 = new Runnable() {
   
            @Override
            public void run() {
   
                System.out.println("匿名内部类实现接口");
            }
        };
        r1.run();
        System.out.println("--------------------------------");

        Runnable r2 = () -> System.out.println("Lambda表达式实现函数式接口");
        r2.run();
    }
匿名内部类实现接口
--------------------------------
Lambda表达式实现函数式接口

2)有一个参数,无返回值

(s) -> System.out.println(s)

若参数列表只有一个参数时,小括号可以省略不写

若lambda体中只有一条语句,return 和 大括号都可以省略不写(有return就要写大括号)

    public void test2(){
   
        Consumer<String> con1 = new Consumer<String>() {
   
            @Override
            public void accept(String s) {
   
                System.out.println(s);
            }
        };
        con1.accept("Hello!");
        System.out.println("---------------------------------------");
        
        Consumer<String> con2 = s -> System.out.println(s);
        con2.accept("弱水三千,只取一瓢");
    }
Hello!
---------------------------------------
弱水三千,只取一瓢

3)两个以上的参数

有两个以上的参数,并且lambda体中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值