不会吧,都2023年了你还不会Lamda表达式?

✨这里是第七人格的博客✨小七,欢迎您的到来~✨

🍅系列专栏:无🍅

✈️本篇内容: Lamda表达式和函数式接口✈️

🍱本篇收录完整代码地址:无🍱

楔子

仅以此篇献给曾经被Lamda惊艳到的自己,和爱好学习的你。

Lamda表达式

简介

Lambda表达式是一种匿名函数,它允许我们将函数作为参数传递给其他函数或者作为返回值使用。在Java中,它是Java 8引入的一个新特性。Lambda表达式通常用于实现函数式接口,例如Runnable、Callable、Comparator等接口。

基本语法

Lambda表达式的基本语法如下:

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

其中,parameters 是函数的参数列表,可以有任意多个参数;expression 是一个关于参数的简单表达式,它将根据参数计算并返回一个值。如果 expression 只包含一个表达式,那么可以省略括号。

以下是一些Lambda表达式的例子:

1. 定义一个简单的Lambda函数,接受两个整数参数并返回它们的和:
int add = (x, y) -> x + y;

int result = add(3, 4);  // result = 7

2. 使用Lambda表达式对列表进行排序:
List<Integer> numbers = Arrays.asList(1, 5, 2, 8, 3);

Collections.sort(numbers, (x, y) -> x - y);

System.out.println(numbers);  // 输出:[1, 2, 3, 5, 8]

在这个例子中,我们使用Lambda表达式作为 Collections.sort() 方法的比较器,该比较器接受一个函数(在这里是 (x, y) -> x - y),用于确定排序时每个元素的比较方式。这里,我们使用了一个减号来实现升序排序。

小结

1、Lamda表达式是Java8引入的函数式编程风格。

2、可以看作是匿名函数的语法糖。

3、它方法的参数传递的是函数。

函数式接口

简介

函数式接口是Java 8引入的一个新特性,它允许我们使用Lambda表达式来简化代码。函数式接口是只有一个抽象方法的接口,可以使用Lambda表达式来实现该接口的方法。例如:

@FunctionalInterface
public interface MyFunctionalInterface {
    void execute();
}

注:@FunctionalInterface注解仅是标注作用,可以不写

上面的代码定义了一个名为MyFunctionalInterface的函数式接口,该接口只有一个抽象方法execute()。我们可以使用Lambda表达式来实现该方法,如下所示:

MyFunctionalInterface myFunc = () -> System.out.println("www.52javaee.com, Lambda!");
myFunc.execute();  // 输出:www.52javaee.com, Lambda!

除了匿名类,我们还可以使用Lambda表达式来传递参数并实现函数式接口的方法。例如:

@FunctionalInterface
public interface MyFunctionalInterface {
    void execute(String message);
}

public class Main {
    public static void main(String[] args) {
        MyFunctionalInterface myFunc = (message) -> System.out.println(message);
        myFunc.execute("www.52javaee.com, Lambda!");  // 输出:www.52javaee.com, Lambda!
    }
}

方法引用

他是一种简化写法,基本语法如下

object/className :: method

举个例子

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

可以改写成

System.out::println

Java内置常用函数接口

接口参数返回类型描述
Predicate< T >Tboolean用于判断一个对象,满足条件返回true。
Consumer< T >Tvoid用于接收一个对象进行处理但并不返回。
Function<T,R>TT转换一个对象为不同类型的对象
Supplier< T >NoneT提供一个对象
UnaryOperator< T >TT接收并返回同类型的对象
BinaryOperator< T >(T,T)T接收2个同类型对象,返回一个同类型对象

小结

1、接口中只有一个抽象方法

2、@FunctionalInterface注解仅是标注作用,可以不写

总结

本文主要介绍了Java 8引入的Lambda表达式和函数式接口。Lambda表达式是一种匿名函数,可以作为参数传递给其他函数或作为返回值使用。它允许我们简化代码并提高可读性。函数式接口是只有一个抽象方法的接口,可以使用Lambda表达式来实现该接口的方法。Java内置了一些常用的函数式接口,如Predicate、Consumer、Function等。通过使用这些特性,我们可以更简洁地实现一些常见的功能。

下章预告

Java-Stream

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

第七人格

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值