跳到主要内容

Java程序将lambda表达式作为方法参数传递

要理解这个示例,您应该了解以下 Java 编程 主题:

示例 1:定义 lambda 表达式作为方法参数

import java.util.ArrayList;

class Main {
public static void main(String[] args) {
// 创建一个 ArrayList
ArrayList<String> languages = new ArrayList<>();

// 向 ArrayList 添加元素
languages.add("java");
languages.add("swift");
languages.add("python");
System.out.println("ArrayList: " + languages);

// 将 lambda 表达式作为参数传递给 replaceAll() 方法
languages.replaceAll(e -> e.toUpperCase());
System.out.println("更新后的 ArrayList: " + languages);
}
}

输出

ArrayList: [java, swift, python]
更新后的 ArrayList: [JAVA, SWIFT, PYTHON]

在上述示例中,我们创建了一个名为 languages 的 arraylist。注意以下行,

languages.replaceAll(e -> e.toUpperCase());

这里,e -> e.toUpperCase() 是一个 lambda 表达式。它将 arraylist 中的所有元素转换为大写。

示例 2:传递多行 lambda 体作为函数参数

import java.util.ArrayList;
import java.util.Arrays;

class Main {
public static void main(String[] args) {

// 创建一个 ArrayList
ArrayList<String> languages = new ArrayList<>(Arrays.asList("java", "python"));
System.out.println("ArrayList: " + languages);

// 调用 forEach() 方法
// 将 lambda 作为 forEach() 的参数传递
// 反转 ArrayList 中的每个元素
System.out.print("反转后的 ArrayList: ");
languages.forEach((e) -> {

// lambda 表达式的主体
String result = "";
for (int i = e.length()-1; i >= 0 ; i--)
result += e.charAt(i);
System.out.print(result + ", ");
});

}
}

输出

ArrayList: [java, python]
反转后的 ArrayList: avaj, nohtyp,

在上述示例中,我们创建了一个名为 languages 的 arraylist。注意以下行,

    languages.forEach((e) -> {

// lambda 表达式的主体
String result = "";
for (int i = e.length()-1; i >= 0 ; i--)
result += e.charAt(i);
System.out.print(result + ", ");
});

这里,我们将 lambda 表达式作为参数传递给 ArrayList forEach() 方法。这个 lambda 表达式将反转 arraylist 中的每个元素。