Java函数式编程中如何创建高阶函数?

高阶函数在 java 函数式编程中允许接受或返回函数。语法:function createhighorderfunction(predicate predicate, function function)。实战中,可创建高阶函数以基于条件过滤满足特定标准的数据。

Java函数式编程中如何创建高阶函数?

Java 函数式编程:创建高阶函数

Java 函数式编程中,高阶函数是接受函数作为参数或返回函数的新函数。它允许我们创建可灵活组合和重用的通用代码。

创建高阶函数的语法:

<R> Function<T, R> createHighOrderFunction(Predicate<T> predicate, Function<T, R> function) {
    return (T t) -> {
        if (predicate.test(t)) {
            return function.apply(t);
        } else {
            return null; // 或者返回一个默认值
        }
    };
}

其中:

  • 表示结果类型
  • T 表示输入类型
  • Predicate 表示一个布尔函数,接受 T 类型的参数,返回 boolean
  • Function 表示一个函数接口,接受 T 类型的参数,返回 R 类型的结果

实战案例:

假设我们有一个列表包含顾客姓名和他们的购买记录。现在我们要创建一个高阶函数,过滤出购买超过 100 美元的顾客姓名:

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
import java.util.function.Function;

public class HighOrderFunctionExample {
    public static void main(String[] args) {
        List<String> customerNames = Arrays.asList("John", "Mary", "Bob", "Alice");
        List<Double> purchaseAmounts = Arrays.asList(120.0, 80.5, 150.2, 75.1);

        // 创建高阶函数
        Function<String, String> filterFunction = createHighOrderFunction(
                (String name) -> purchaseAmounts.get(customerNames.indexOf(name)) > 100,
                (String name) -> name
        );

        // 调用高阶函数
        List<String> filteredNames = customerNames.stream()
                .map(filterFunction)
                .filter(name -> name != null)
                .toList();

        // 打印结果
        System.out.println(filteredNames);
    }
}

输出:

[John, Bob]

这个高阶函数 filterFunction 接受一个顾客姓名作为输入,如果该顾客的购买金额超过 100 美元,则返回该姓名;否则返回 null。然后,我们使用过滤函数 filterFunction 过滤列表中的姓名,并打印出符合条件的顾客姓名。

以上就是Java函数式编程中如何创建高阶函数?的详细内容,更多请关注其它相关文章!