欢迎访问宙启技术站
智能推送

Java匿名函数用法及示例

发布时间:2023-06-21 12:49:20

Java匿名函数是一种可以在代码中定义临时函数的方式。它们是没有名称的函数,并且可以被直接传递或赋值给其他变量或函数。Java匿名函数也称为Lambda表达式,是一种函数式编程的重要特性。本文将介绍Java匿名函数的用法及示例。

一、Java匿名函数的语法

Java匿名函数的语法如下:

(parameter1, parameter2, …) -> { statements; }

其中,参数列表(parameter1, parameter2, …)是匿名函数所需的参数,箭头(->)表示将参数绑定到函数体,函数体的花括号({ statements; })中包含匿名函数的实现。

例如,一个简单的加法函数可以使用Java匿名函数实现,如下所示:

int sum = (a, b) -> a + b;

在这个例子中,匿名函数(a, b)-> a + b 计算并返回a和b的和。将这个匿名函数赋值给变量sum,就可以使用sum来调用这个函数。

二、Java匿名函数的用途

Java匿名函数可以在许多地方使用,包括:

1.简化代码

使用Java匿名函数可以减少重复的代码,并使代码更简洁易懂。例如,使用匿名函数可以简化以下代码:

interface MathOperation {

    int operation(int a, int b);

}

public class Main {

    public static void main(String[] args) {

        MathOperation addition = new MathOperation() {

          public int operation(int a, int b) {

             return a + b;

          }

       };

       int sum = addition.operation(10, 20);

       System.out.println("Sum = " + sum);

    }

}

可以使用Java匿名函数来实现相同的功能,如下所示:

interface MathOperation {

    int operation(int a, int b);

}

public class Main {

    public static void main(String[] args) {

       MathOperation addition = (a, b) -> a + b;

       int sum = addition.operation(10, 20);

       System.out.println("Sum = " + sum);

    }

}

2.作为参数

Java匿名函数可以作为参数传递给其他方法。这种技术被称为“函数式接口”,这意味着接受Java匿名函数的方法必须接受只有一个抽象方法的接口。例如,下面的代码使用Java匿名函数作为参数传递给Thread类:

Thread thread = new Thread(() -> System.out.println("Hello, world!"));

thread.start();

3.使用Stream API

Java 8引入了Stream API,这是一个用于处理Java集合的新API。使用Stream API可以使用Java匿名函数来进行过滤、映射等操作,并返回一个新的集合。例如,以下代码使用Stream API过滤出具有2个字母的单词:

List<String> words = Arrays.asList("dog", "cat", "bird", "lion", "tiger");

List<String> filteredWords = words.stream()

    .filter(word -> word.length() == 3)

    .collect(Collectors.toList());

System.out.println(filteredWords);    //输出:[dog, cat]

三、Java匿名函数的示例

以下是一些Java匿名函数的示例,展示了它们的常见用途:

1.计算平方

使用Java匿名函数可以使用一行代码计算相应数字的平方:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

numbers.stream().map(x -> x * x).forEach(System.out::println);

输出:

1

4

9

16

25

2.计算平均值

以下代码演示了如何使用Java匿名函数来计算数字列表的平均值:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

int sum = numbers.stream().mapToInt(Integer::intValue).sum();

double average = numbers.stream().mapToInt(Integer::intValue).average().getAsDouble();

System.out.println("Sum = " + sum);        //输出:Sum = 15

System.out.println("Average = " + average);    //输出:Average = 3.0

3.按长度排序

以下代码演示了如何使用Java匿名函数来按字符串长度对字符串列表进行排序:

List<String> words = Arrays.asList("dog", "cat", "bird", "lion", "tiger");

Collections.sort(words, (s1, s2) -> Integer.compare(s1.length(), s2.length()));

System.out.println(words);    //输出:[cat, dog, bird, lion, tiger]

总结

Java匿名函数是一种简洁、灵活的编程方式,由于可以在代码中定义临时函数,因此可以大大简化代码。它们可以在 Java 8 中使用,可以应用于简单的计算或作为参数传递给其他方法。此外,它们还可以在Java集合的Stream API中发挥作用。