Lambda 表达式复习

简介: Lambda 表达式复习

凡是确定的东西,都要删掉

Runnable r2 = () -> {sout("....")};

Comparator<Integer> com1 = (o1,o2) ->Integer.compare(o1,o2) ;

//方法引用

参数也是一样的

Comparator<Integer> com2 =  Integer :: compare;

Lambda表达式的使用举例:

格式

->:箭头操作符

左边:对应着要重写的方法的形参列表

右边:重写的方法的方法体

只有一条语句可以直接省略大括号和return

接口只有一个抽象方法的场景

六个格式

1.无参无返回值:run方法

2.只有一个参数没返回值

3.和上面一样,增加了一个类型推断,类型可以省略

int[] arr = {};

Hashmap<String,Integer> map = new HashMap<>();

var entryset = mao.entrySet();   jdk10以后

4.只有一个参数的时候,小括号可以省略

5.有大括号和返回值的时候,删除大括号也得删除返回值

函数式接口?

什么是函数式接口

lambda表达式看做一个匿名函数

匿名函数是一个对象

先造类实现接口再造对象调用,有点重,所以java就学些了别人的优点

函数式编程思想:不注重过程,注重结果,lambda表达式也是一个对象

什么是函数式接口?

只声明了一个抽象方法,则此接口就是函数式接口

基本的函数式接口(4个)

接口                                         抽象方法

Consumer<T> 消费型接口       void accept(T t)

Supplier<T> 供给型接口           T get()

Function<T>函数型                   R apply(T t)

Predicted<T>判断型接口           boolean test(T t)

函数式接口都有在java.util.funtion包下

总结: 形参列表 -> {方法体};

构造器应用/方法引用

Integer :: compare

如何理解??

>方法引用看做基于lambda表达式的进一步刻画

当需要提供一个函数式接口的实例时,可以使用lambda表达式

>当满足一定的条件的情况下,我们还可以使用方法引用或构造器应用替换lambda表达式

方法引用的本质 ->作为了函数式接口的实例

格式

类(或对象):: 方法名

情况1:

对象  ::  实例方法

要求抽象方法A和内部实现的调用的某个方法B的形参和返回值都相同,可以用b对a进行覆盖

注意:此方法b是非静态的方法

类    ::   静态方法

基本同上

类    ::   实例方法

调用的方法的调用者是形参的第一个参数,返回值相同

println 和 accept方法参数和返回值一样,把println看做accept的一个覆盖

Consumer<String> com2 = System.out :: println;

要求:函数时间接口中的抽象方法a和调用的方法b的返回值相同

同时抽象方法有n个参数,b有n-1个方法

且抽象方法a的第一个参数作为方法b的调用者

且a的后n-1个参数和方法b的形参相同或一致

就可以使用b对a进行覆盖或引用

(b是一个非静态的方法,需要对象调用,但是形式上使用所属的类来调用)

构造器引用/数组引用

Employee :: new

类名 :: new

说明:

>调用了类名对应的类中的某一个确定的构造器

>具体调用的类中的哪一个构造器,取决于函数式接口的抽象方法的形参列表

数组引用

数组名[]   ::   new;

相关文章
|
4天前
|
Java Scala 开发者
课时130:Lamda表达式
课时130介绍了Lambda表达式的基础与应用。从JDK 1.8开始,Java引入了Lambda表达式以简化代码开发,支持函数式编程,减少面向对象编程中的繁琐结构。Lambda表达式适用于只有一个抽象方法(SAM)的接口,如IMessage接口。通过Lambda表达式,开发者可以更简洁地实现接口功能,例如消息发送和数学运算。范例展示了如何使用Lambda表达式替换匿名内部类,使代码更加简洁明了。此外,Lambda表达式还支持无参数、有参数及单行语句的简化形式,进一步提高了代码的可读性和维护性。
课时130:Lamda表达式
|
6月前
|
C#
C#一分钟浅谈:Lambda 表达式和匿名方法
本文详细介绍了C#编程中的Lambda表达式与匿名方法,两者均可用于定义无名函数,使代码更简洁易维护。文章通过基础概念讲解和示例对比,展示了各自语法特点,如Lambda表达式的`(parameters) =&gt; expression`形式及匿名方法的`delegate(parameters)`结构。并通过实例演示了两者的应用差异,强调了在使用Lambda时应注意闭包问题及其解决策略,推荐优先使用Lambda表达式以增强代码可读性。
95 8
|
9月前
|
算法 编译器
lambda 表达式
lambda 表达式
Python知识点:lambda 表达式
lambda 表达可以被看做是一种匿名函数。它可以让你快速定义一个极度简单的单行函数。譬如这样一个实现三个数相加的函数:
|
存储 算法 编译器
C++ lambda 表达式
# C++ `lamdba` 表达式 > Lambda表达式是C++11引入的一个新特性,它允许我们在需要函数对象的地方,使用一种更加简洁的方式定义匿名函数。Lambda表达式通常用于`STL`中的算法、回调函数、事件处理程序等场合。 Lambda表达式的基本语法为: ```c++ Copy Code[capture list](parameter list) mutable exception -> return type { function body } ``` ## `lamdba`表达式在什么场合下使用 C++11 lambda表达式可以用来创建匿名函数,也就是没有函数名的
120 0
|
Java
【Java编程进阶】运算符与表达式
计算机诞生的初衷是为了进行数学的运算,Java 作为一门计算机编程语言,同样也提供了用于操纵变量的`运算符`来进行数学运算。
156 0
【Java编程进阶】运算符与表达式
|
并行计算 Java 编译器
Lambda 表达式
Lambda 表达式
183 0
Lambda 表达式
|
Java 编译器
深入理解 Lambda 表达式
Java 8 的 Lambda 表达式已经不再是“新特性”。 现在很多人工作中会使用 Lambda 表达式。 但是,你是否真正理解 Lambda 表达式的底层原理?
416 0
深入理解 Lambda 表达式
|
JavaScript 前端开发 Java
别翻了,Lambda 表达式入门,看这篇就够了(1)
别翻了,Lambda 表达式入门,看这篇就够了
171 0
别翻了,Lambda 表达式入门,看这篇就够了(1)
|
Java 编译器
深入理解Java Lambda 表达式
Java 8 的 Lambda 表达式已经不再是“新特性”。 现在很多人工作中会使用 Lambda 表达式。 但是,你是否真正理解 Lambda 表达式的底层原理?
290 0
深入理解Java  Lambda 表达式

热门文章

最新文章