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

Java中常用的高阶函数和Lambda表达式

发布时间:2023-07-02 11:51:29

Java中常用的高阶函数和Lambda表达式

高阶函数(Higher-Order Functions)是一种特殊的函数,它能够接受一个或多个函数作为参数,并且能够返回一个函数。

Java中的高阶函数主要通过Lambda表达式来实现。Lambda表达式是一种简洁的语法,它可以用来替代传统的匿名内部类,并且能够在代码中定义一个函数式接口的实例。

Java 8引入了Lambda表达式,通过使用Lambda表达式,我们可以编写更简洁、更易读的代码,并且能够更好地支持函数式编程风格。

以下是一些常用的高阶函数和Lambda表达式的用法:

1. forEach:

forEach是List接口中的一个默认方法,它接受一个Consumer函数式接口作为参数,并且对于List中的每个元素执行该函数。

例如:

   List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
   numbers.forEach((Integer number) -> System.out.print(number + " "));
   

2. filter:

filter是Stream接口中的一个方法,它接受一个Predicate函数式接口作为参数,并且对于Stream中的每个元素,只保留符合条件的元素。

例如:

   List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
   List<Integer> evenNumbers = numbers.stream()
                                       .filter((Integer number) -> number % 2 == 0)
                                       .collect(Collectors.toList());
   

3. map:

map是Stream接口中的一个方法,它接受一个Function函数式接口作为参数,并且对于Stream中的每个元素,将其映射到一个新的值。

例如:

   List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
   List<Integer> squaredNumbers = numbers.stream()
                                          .map((Integer number) -> number * number)
                                          .collect(Collectors.toList());
   

4. reduce:

reduce是Stream接口中的一个方法,它接受一个BinaryOperator函数式接口作为参数,将Stream中的元素合并为一个值。

例如:

   List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
   Optional<Integer> sum = numbers.stream()
                                   .reduce((Integer a, Integer b) -> a + b);
   

5. sorted:

sorted是Stream接口中的一个方法,它能够对Stream中的元素进行排序。

例如:

   List<Integer> numbers = Arrays.asList(5, 3, 1, 4, 2);
   List<Integer> sortedNumbers = numbers.stream()
                                         .sorted()
                                         .collect(Collectors.toList());
   

总结:

高阶函数和Lambda表达式是Java中函数式编程的核心概念之一,它们能够让我们以一种更符合人类思维的方式编写代码,将重点放在“做什么”而不是“怎么做”的细节上。通过使用高阶函数和Lambda表达式,我们能够编写更简洁、更易读、更易于维护的代码,并且能够更好地利用Java 8中引入的新特性。