java lambda表达式用法总结

Lambda表达式是Java 8中引入的一种新特性,可以用于创建一个匿名函数,从而大大简化了代码的编写。它可以看做是一种语法糖,用于简化某些类型的方法的声明。

Java Lambda表达式用法总结

什么是Lambda表达式

Lambda表达式是Java 8中引入的一种新特性,可以用于创建一个匿名函数,从而大大简化了代码的编写。它可以看做是一种语法糖,用于简化某些类型的方法的声明。

在Java中,Lambda表达式由两部分组成:

  1. 参数列表:可以包含0个或多个参数,多个参数用逗号隔开。
  2. 代码块:可以是任意的Java代码块,可以有一个返回值。

Lambda表达式的语法格式如下:

(parameter1, parameter2, ...) -> { code block }

其中,(parameter1, parameter2, ...)表示参数列表,code block表示代码块。

Lambda表达式的用途

Lambda表达式的主要用途是简化某些类型的方法的声明。它可以被用于函数式接口,这是一种只包含一个抽象方法的接口,Lambda表达式可以直接赋值给这种类型的变量,或者作为参数传递给函数。

例如,下面是一个函数式接口的定义:

@FunctionalInterface
public interface MyInterface {
    void myMethod();
}

在这个接口中,只包含了一个抽象方法myMethod()。现在,我们可以将一个Lambda表达式分配给这个接口类型的变量:

MyInterface myLambda = () -> System.out.println("Hello, World!");
myLambda.myMethod();

这个代码段的输出应该是 "Hello, World!"。

Lambda表达式的另一个特点是它们可以使用自由变量。这些变量可以是在表达式范围内不声明的任意变量。

示例说明

示例1

下面的示例展示了如何使用Lambda表达式来实现函数式接口:

@FunctionalInterface
interface MyInterface {
    void display();
}

public class LambdaExpressionDemo {
    public static void main(String[] args) {
        MyInterface mi = () -> System.out.println("Hello, World!");
        mi.display();
    }
}

该示例中定义了一个函数式接口MyInterface,其唯一的方法display不包含任何参数或返回类型。在main方法中,一个Lambda表达式被分配给一个MyInterface实例,使用Lambda表达式调用myMethod方法输出"Hello, World!"。

示例2

现在考虑一个更具实用性的情况,即如何使用Lambda表达式对一个列表进行排序。

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class LambdaExpressionDemo {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");
        names.add("David");
        names.add("Eve");

        // 使用匿名内部类进行排序
        Collections.sort(names, new Comparator<String>() {
            public int compare(String s1, String s2) {
                return s1.compareTo(s2);
            }
        });

        // 使用Lambda表达式进行排序
        Collections.sort(names, (s1, s2) -> s1.compareTo(s2));

        System.out.println(names);
    }
}

以上程序使用一个列表来存储若干个字符串,然后使用Lambda表达式和匿名内部类来排序这些字符串。Lambda表达式中的compare方法使用了Java中String类型的compareTo方法来比较两个字符串的大小。

总结

Lambda表达式是Java 8中一种强大的新特性。它允许我们直接传递行为(具体说来是对象)而不必声明它们(比如创建一个匿名内部类)。这样直接将代码作为数据传递,可以大大简化代码,并且提高代码的可读性、可维护性和可扩展性。

本文标题为:java lambda表达式用法总结

基础教程推荐