当前位置: 首页 > 图灵资讯 > 技术篇> Java函数式编程中如何创建高阶函数?

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

来源:图灵教育
时间:2024-09-29 21:10:37

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

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

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函数编程中如何创建高级函数?详情请关注图灵教育的其他相关文章!