
在此示例中,我们将学习将lambda表达式作为Java中的方法参数传递。
要理解此示例,您应该了解以下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的数组列表。注意这一行,
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的每个元素。
