7.8 Lanbda 表达式

 

7.8 Lambda表达式

Lambda表达式是JDK 8引入的一项功能,它使得Java代码变得更加简洁且具有表达力,特别是在集合的遍历和其他操作中。Lambda表达式可以在很多情况下替代匿名内部类,简化代码的编写。此外,JDK还提供了大量内置的函数式接口,使得使用Lambda表达式变得更为方便和高效。

Lambda表达式的组成

Lambda表达式由以下三个部分组成:

  1. 参数列表 - 可以包含零个或多个参数。
  2. 箭头符号 (->) - 用于分隔参数列表和Lambda体。
  3. 方法体 - 可以是一个单一表达式或一个语句块。

方法体如果是表达式,那么Lambda表达式的结果就是该表达式的结果;如果是一个语句块,语句块内的语句将被执行。

Lambda表达式的常用语法格式

以下是Lambda表达式的一些常用语法格式:

  • () -> System.out.println("Hello Lambda!");
    • 无参数,执行一个动作但不返回值。
  • (x) -> System.out.println(x)
    • 一个参数,无返回值。
  • x -> System.out.println(x)
    • 若只有一个参数,可以省略参数的括号。
  • (x, y) -> { System.out.println("函数式接口"); return Integer.compare(x, y); }
    • 有两个参数并且Lambda体包含多条语句,有返回值。
  • (x, y) -> Integer.compare(x, y)
    • 如果Lambda体仅有一条语句,可以省略return关键字及花括号。
  • (Integer x, Integer y) -> Integer.compare(x, y)
    • 参数类型通常可以省略,因为JVM可以根据上下文推断出数据类型。

示例应用:排序字符串数组

在下面的Java程序中,我们将使用两种不同的Lambda表达式来对字符串数组进行排序。

文件7-28 Example28.java
import java.util.Arrays;

public class Example28 {
    public static void main(String[] args) {
        String[] arr = {"program", "creek", "is", "a", "Java", "site"};

        // 使用Lambda表达式按字符串长度排序
        Arrays.sort(arr, (m, n) -> Integer.compare(m.length(), n.length()));
        System.out.println("Lambda语句体中只有一条语句,参数类型可推断:" +
                           Arrays.toString(arr));

        // 使用复杂Lambda表达式按长度逆序排序
        Arrays.sort(arr, (String m, String n) -> {
            if (m.length() > n.length())
                return -1;
            else if (m.length() < n.length())
                return 1;
            else
                return 0;
        });
        System.out.println("Lambda语句体中有多条语句:" + Arrays.toString(arr));
    }
}
运行结果

这个示例展示了如何使用不同类型的Lambda表达式对数组进行排序。第一个排序操作将数组按照字符串长度升序排列,第二个则进行了逆序排列。

  • 输出结果
    • 第一次排序结果:[a, is, Java, site, creek, program]
    • 第二次排序结果:[program, creek, Java, site, is, a]

Lambda表达式不仅提高了代码的可读性和简洁性,还加快了开发过程,特别是在处理集合和数组等数据结构时。通过上述示例,我们可以看到Lambda表达式在实际编程中的强大功能和灵活性。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夏驰和徐策

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

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

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

打赏作者

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

抵扣说明:

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

余额充值