首页 > 图灵资讯 > 技术篇>正文
Java函数式编程中如何创建高阶函数?
2024-09-29 21:10:37
高阶函数在 java 允许在函数编程中接受或返回函数。语法: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函数编程中如何创建高级函数?详情请关注图灵教育的其他相关文章!