关于Java 中的 Lambda 表达式你了解多少?

Posted 海拥✘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Java 中的 Lambda 表达式你了解多少?相关的知识,希望对你有一定的参考价值。

🌊 作者主页:海拥
🌊 作者简介:🏆CSDN全栈领域优质创作者、🥇HDZ核心组成员、🥈蝉联C站周榜前十
🌊 粉丝福利:粉丝群 每周送四本书,每月送各种小礼品(搪瓷杯、抱枕、鼠标垫、马克杯等)

直接跳到末尾 去评论区领书

这篇文章我们将讨论关于Java 中的 Lambda 表达式,Lambda 表达式是 Java 涉足函数式编程的过程。它接受参数并将其应用于表达式或代码块。以下是语法的基本示例:

(parameter1, parameter2) => expression

或者

(parameter1, parameter2) => {code block}

Lambda 表达式非常有限,如果它不是 void,则必须立即返回一个值。他们不能使用诸如 if 或 for 之类的关键字来保持简单性。如果需要更多行代码,则可以改用代码块。

现在在实现 lambda 表达式时,不能只使用表达式。Lambda 是函数式接口的实现。函数式接口是只有一个抽象方法的接口。lambda 的好处是它们允许你实现方法而无需实现接口的类和实例化对象。下面是一个例子:

interface FuncInterface
{
    // 抽象函数
    void abstractFun(int x);

    // 非抽象(或默认)函数
    default void normalFun()
    {
       System.out.println("Hello");
    }
}

class Test
{
    public static void main(String args[])
    {
        // 实现上述功能接口的 lambda 表达式。 
        // 该接口默认实现 abstractFun()
        FuncInterface fobj = (int x)->System.out.println(2*x);

        // 这会调用上面的 lambda 表达式并打印 10。
        fobj.abstractFun(5);
    }
}

Lambda 表达式通常用作函数的参数。为了提高可读性,你还可以将 lambda 表达式存储在变量中,只要该类型是一个只有一个方法、相同数量的参数和相同返回类型的接口。

import java.util.ArrayList;
import java.util.function.Consumer;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    Consumer<Integer> method = (n) -> { System.out.println(n); };
    numbers.forEach( method );
  }
}

lambda 的一个常见用途是创建线程。这是一个使用 lambda 代码块实现 Runnable 对象的示例,供线程执行。

// 可运行的 Lambda
Runnable task2 = () -> { System.out.println("Task #2 is running"); };

// 启动线程
new Thread(task2).start();

作为初学者,我们大多数人都被教导使用 OOP 概念进行编程,因此使用不同的范式(如函数式编程)可能会有些别扭。我自己仍在学习这些概念中。不管怎样我希望这篇文章能让大家学到一些东西。如果你有更多问题或想深入研究该主题,欢迎评论或者查看下方的资料。我提取的代码示例也来自那里。

参考资料:

https://www.w3schools.com/java/java_lambda.asp
https://www.codejava.net/java-core/the-java-language/java-8-lambda-runnable-example
https://www.geeksforgeeks.org/lambda-expressions-java-8/
https://www.developer.com/microsoft/start-using-java-lambda-expressions/

🥇 评论区抽粉丝送书啦

💌 欢迎大家在评论区提出意见和建议! (抽两位幸运儿送书,实物图如下)💌

《亿级流量Java高并发与网络编程实战》

【内容简介】

《亿级流量Java高并发与网络编程实战》系统全面的介绍了开发人员必学的知识,如JVM、网络编程、NIO等知识,让开发人员系统地掌握JAVA高并发与网络编程知识。《亿级流量Java高并发与网络编程实战》分为10章,内容如下。第1章,主要讲高并发相关JVM原理解析;第2章,主要讲 Java 网络编程;第3章,主要讲 Java NIO;第4章,主要讲并发框架Disruptor;
  第5章,主要讲微服务构建框架Spring Boot;第6章,主要讲微服务治理框架Spring Cloud/Dubbo;第7章,主要讲 Java高并发网络编程框架Netty - 实战应用;第8章,主要讲 Java高并发网络编程框架Netty - 深度解读;第9章,主要讲海量数据的高并发处理;第10章,主要讲基于高并发与网络编程的大型互联网项目实战。本书主要面向面向零基础及入门级读者,Java从业人员。

也有不想靠抽,想自己买的同学可以参考下面的链接

京东自营购买链接:

《亿级流量Java高并发与网络编程实战》- 京东图书

当当自营购买链接:

《亿级流量Java高并发与网络编程实战》- 当当图书

📣 注意:

大家点赞关注,三天后也就是 11月14日 从评论区留言的同学中抽取两位送书

🌊 面试题库:Java、Python、前端核心知识点大全和面试真题资料
🌊 电子图书:图灵程序丛书 300本、机械工业出版社6000册免费正版图书
🌊 办公用品:精品PPT模板几千套,简历模板一千多套
🌊 学习资料:2300套PHP建站源码,微信小程序入门资料

如果中奖了联系不上则视为放弃,可以从下方公众号里找到作者的联系方式,每周都会送四本书,后面送书力度还会加大,一年送几百上千本不是问题,回复【进群】领书不迷路,群内 每位成员 我都会送一本。回复【资源】可获取上面的资料👇🏻👇🏻👇🏻

以上是关于关于Java 中的 Lambda 表达式你了解多少?的主要内容,如果未能解决你的问题,请参考以下文章

Java 8 中的 Lambda 表达式

了解并学会用Java中的Lambda表达式

Java中的构造函数引用和方法引用

做了这么久的程序员,你知道为什么会有 Lambda 表达式吗?

java拓展----探秘Lambda 表达式

跟上 Java 8 – 了解 lambda