Lambda 表达式是 Java 8 引入的一项重要特性,它允许以更简洁的方式编写匿名函数。Lambda 表达式通常用于简化使用函数式接口的代码。以下是一个简单的 Java Lambda 教程,介绍了 Lambda 表达式的基本概念和用法。

1. Lambda 表达式基础:

Lambda 表达式的基本语法如下:
(parameters) -> expression

或者:
(parameters) -> { statements; }

Lambda 表达式由参数列表、箭头符号和主体组成。主体可以是一个表达式或一组语句。

2. 使用 Lambda 表达式:

Lambda 表达式通常与函数式接口一起使用。函数式接口是只包含一个抽象方法的接口。
@FunctionalInterface
interface MyInterface {
    void myMethod(String s);
}

public class LambdaExample {
    public static void main(String[] args) {
        // 使用匿名类
        MyInterface myInterface1 = new MyInterface() {
            @Override
            public void myMethod(String s) {
                System.out.println("Hello, " + s);
            }
        };
        myInterface1.myMethod("World");

        // 使用 Lambda 表达式
        MyInterface myInterface2 = (s) -> System.out.println("Hello, " + s);
        myInterface2.myMethod("Lambda");
    }
}

3. Lambda 表达式的参数:

Lambda 表达式的参数列表可以为空,也可以有多个参数。
// 无参数
() -> System.out.println("Hello");

// 单个参数
(x) -> System.out.println("Value: " + x);

// 多个参数
(x, y) -> {
    int sum = x + y;
    System.out.println("Sum: " + sum);
}

4. Lambda 表达式的主体:

Lambda 表达式的主体可以是一个表达式,也可以是一组语句。
// 表达式主体
(x, y) -> x + y

// 语句主体
(x, y) -> {
    int sum = x + y;
    System.out.println("Sum: " + sum);
}

5. Lambda 表达式与集合:

Lambda 表达式在集合操作中非常有用,例如使用 forEach 迭代集合。
import java.util.ArrayList;
import java.util.List;

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

        // 使用 Lambda 表达式迭代集合
        names.forEach(name -> System.out.println("Hello, " + name));
    }
}

6. Lambda 表达式的方法引用:

Lambda 表达式还支持方法引用,可以通过 :: 来引用一个方法。
import java.util.Arrays;

public class MethodReferenceExample {
    public static void main(String[] args) {
        // 使用 Lambda 表达式
        Arrays.asList("Java", "C", "Python")
              .forEach(s -> System.out.println(s));

        // 使用方法引用
        Arrays.asList("Java", "C", "Python")
              .forEach(System.out::println);
    }
}

7. Lambda 表达式与函数式接口:

Lambda 表达式通常与函数式接口一起使用,函数式接口是只包含一个抽象方法的接口。
@FunctionalInterface
interface MyFunctionalInterface {
    void myMethod(String s);
}

public class LambdaWithFunctionalInterface {
    public static void main(String[] args) {
        // 使用 Lambda 表达式
        MyFunctionalInterface myInterface1 = (s) -> System.out.println("Hello, " + s);
        myInterface1.myMethod("Lambda");

        // 使用匿名类
        MyFunctionalInterface myInterface2 = new MyFunctionalInterface() {
            @Override
            public void myMethod(String s) {
                System.out.println("Hello, " + s);
            }
        };
        myInterface2.myMethod("Anonymous Class");
    }
}

以上是一个简单的 Java Lambda 教程,介绍了 Lambda 表达式的基本概念和用法。Lambda 表达式是 Java 8 中引入的一项重要特性,使得代码变得更加简洁和具有更好的可读性。


转载请注明出处:http://www.zyzy.cn/article/detail/465/Java