java - 使用流组成函数数组

标签 java function java-8 java-stream

我想将一组函数组合成一个函数。给定多个函数,该方法应返回一个函数,该函数是输入函数的组合。

一种方法是

public static <T> Function<T,T> composeAll(Function<T,T>... functions){
    Function<T,T> res = Function.identity();
    for(Function<T,T> f : functions){
       res = res.compose(f);
    }
    return res;
}

我希望通过首先创建函数数组流来实现相同的结果。但我不知道该怎么做

public static <T> Function<T,T> composeAll2 (Function<T,T>... functions){
    Function<T,T> res = Function.identity();
    Arrays.stream(functions). ??? 
    return res;
}

我现在打问号的最后一个方法应该输入什么代码?

最佳答案

您可以使用 Stream#reduce()操作:

public static <T> Function<T,T> composeAll2 (Function<T,T>... functions){
    return Arrays.stream(functions).reduce(Function.identity(), Function::compose);
}

这与您编写函数的迭代方式相同。

关于java - 使用流组成函数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47755408/

相关文章:

java - 如何处理复杂数据结构的嵌套for循环?

java - Jmeter - 使用日历非法使用 undefined variable

java - 在 Javascript 中,valuesLength = (values.length, undefined); 的作用是什么? - 做?

java - 使用未签名请求流将 google Oauth1 迁移到 OAuth2

mysql - SQL中两个表之间的计算

python - 如何将字符串转换为嵌套列表,元素以逗号分隔

java - 在 forEach Java 8 里面积累

python - Python中参数的强制命名

java - 在我的 WSL Kali linux 上安装 jdk 时出现语法错误

java - 检查映射中的键是否与Java中的List内容匹配