爪哇 8中的Lambda表达式

爪哇 8 Lambda表达式
爪哇 8 引入了一项称为Lambda表达式的新功能。它被认为是Java的重大变化。由于这种变化将把功能编程带入 爪哇. Other languages such as Scala already have this feature so this is not new to programming world, it is new to java

Before understanding Lambda expressions, Lets first understand Functional Interface.

什么是功能接口?

功能接口 是那些只有一个接口 抽象方法 在里面。它可以具有多个默认值或 静态的 方法,并且可以覆盖java.lang.object中的方法。让’创建一个功能接口:
爪哇本身可以识别功能接口,但您也可以表示 接口 通过使用@FunctionalInterface注释功能接口。
一些流行的功能接口是:

为什么使用Lambda表达式?

让s understand with help of  Anonymous Comparator:

让’s说您需要按电影名称对电影列表进行排序。
电影.java

使用以下代码按名称对电影列表进行排序的代码 比较器

匿名比较器的问题在于语法。每次您想使用比较器对列表进行排序时,都必须记住庞大的语法。
So generally the main problem with Anonymous classes is syntax. For very simple operation, we need to write complex code. To solve this problem, JDK has introduced a new feature called Lambda Expressions. I will take this example after explaining lambda expression to understand, how lambda expression will reduce this complex code.

什么是Lambda表达式:

lambda表达式表示一个匿名函数。它由一组参数,一个lambda运算符(->) and a function body . You can call it function without name,
Lambda表达式和功能接口之间的连接:
您可能会以为我已经介绍了上面的功能接口,但是它如何与Lambda连接。因此,Lambda表达式可以应用于正在实现或匿名实例化的功能接口的抽象方法。

Lambda表达式的结构

(参数列表)->{expression;} or
(参数列表)->{statements;}
因此,我们可以将Lambda表达式的结构分为三个部分:
  1. 参数列表或参数
    • Lambda表达式可以具有零个或多个参数。
      ()->{System.out.println(“Hello”)}; //不带参数,会打个招呼
      (int a)->{System.out.println(a)}; //一个参数,将输出a的值
      (int a,int b)->{a + b}; //两个参数,将返回这两个整数的和
    • 您可以选择不声明参数的类型,因为可以从上下文中推断出来。
    • (a,b)->{a + b}; //两个参数,将返回这两个数字的和
    • 你不能声明一个参数’的类型,请勿为其他参数声明类型。
    • (int a,b)->{a + b}; //编译错误
    • 当有一个参数时,如果推断出其类型,则不必使用括号
      a->{System.out.println(a)}; //将输出数字a
  2. 数组令牌(->)
  3. 身体
    • 身体 可以有表达式或语句。
    • If there is only one statement in body,curly brace is not needed and return type of the anonymous function is same as of body expression
    • If there are more than one statements, then it should be in curly braces and return type of anonymous function is same as value return from code block, 虚空 if nothing is returned.
让’举一些例子,你想初始化 线 现在您将意识到,lambda表达式如何使您的编码变得容易:
让’我们再举一个例子 比较器 我们已经在匿名中看到了 爪哇比较器。我们将创建电影列表,并使用平凡的方式和lambda表达式按电影名称对其进行排序。
创建一个名为 电影.爪哇
创建一个名为ComparatorMain.java的主类

输出:

在按名称排序之前:
电影名称:盗梦空间||电影时长:110
电影名称:GodFather ||电影时长:200
电影名称:森林阿甘||电影时长:130
电影名称:复仇者联盟||电影时长:150
按名称排序后:
电影名称:复仇者联盟||电影时长:150
电影名称:森林阿甘||电影时长:130
电影名称:GodFather ||电影时长:200
电影名称:盗梦空间||电影时长:110
As you can see here, we have used lambda expression 对于 using Comparator. So in spite of writing Anonymous comparator, our expression became very easy.
所以我们传递了两个参数o1和o2,我们没有’t传递类型,因为可以从上下文中推断出来。
我们在这里只有一个声明,因此无需将其放在花括号中。

您好World Lambda Expression Example

创建一个名为HelloWorld的接口
创建一个名为HelloWorldMain的类
运行以上程序,您将获得以下输出:
您好 using Lambda Expression
希望您现在了解Lambda表达式,在下一篇文章中,我们将看到更多的示例。

导入联系人

您可能还喜欢:

相关文章

  • 在Java中将日期转换为LocalDate
    1月12日

    爪哇日期到LocalDate

    在这篇文章中,我们将看到如何在Java中将Date转换为LocalDate。有时,我们可能需要将Date转换为新的Java 8 API,反之亦然。在Java中,有多种将Date转换为LocalDate的方法。另请参见:使用Date类的[InInstant()方法将Java中的LocalDate转换为Date…]

  • 在Java中将LocalDate转换为Date
    1月11日

    迄今为止的Java LocalDate

    在这篇文章中,我们将看到如何将LocalDate转换为Date。 Java 8引入了许多有关日期和时间的新API。有多种方法可以将Java LocalDateTime转换为日期。使用Instant对象您可以使用来自Zone的Instant对象将LocalDate转换为Date。这是 […]

  • 将流转换为Java中的列表
    12月31日

    爪哇流列表

    在本文中,我们将看到如何在Java中将Stream转换为List。在Java中,有多种方法可以将Stream转换为List。使用Collectors.toList()可以将Collectors.toList()传递给Stream.collect()方法,以在Java中将Stream转换为List。流’的collect方法对Stream和Collectors的元素执行可变的约简操作。toList()提供[…]

  • 在Java中将LocalDateTime转换为时间戳
    11月18日

    在Java中将LocalDateTime转换为时间戳

    在本文中,我们将如何将LocalDateTime转换为Timestamp。在学习如何将localdatetime转换为时间戳之前,让我们了解LocalDateTime和Timestamp,并了解这种转换的重要性。 LocalDateTime LocalDateTime在Java 8中已引入。LocalDateTime可以导入时间包:import java.time.LocalDateTime; LocalDateTime是使用的不可变对象[…]

  • 8月28日

    爪哇 8流 API深入指南

    在这篇文章中,我们将看到Java 8流的深入概述,其中包含许多示例和练习。简介您可能认为Stream必须类似于InputStream或OutputStream,但是’并非如此。流表示支持顺序和并行聚合操作的一系列元素。流不存储[…]

  • 要映射的Java流列表
    4月26日

    要映射的Java流列表

    在本文中,我们将看到如何在Java 8中使用Stream将List转换为Map。’s toMap()可与Stream一起使用,以在Java中将List转换为Map。考虑一个名为Movie的类,它具有3个字段–ID,名称和流派[crayon-601fa8d7cdb5a339184182 /]创建电影列表并将其转换为[…]

Comments

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。