java - 将函数列表应用于 Java 流 .map() 方法

标签 java lambda functional-programming java-8 java-stream

我映射了一个 NameValuePair 的流带有 lookupFunction (返回 Function ),像这样:

List<NameValuePair> paramPairs = getParamPairs();
List<NameValuePair> newParamPairs = paramPairs.stream()
                .map((NameValuePair nvp) -> lookupFunction(nvp.getName()).apply(nvp))
                .flatMap(Collection::stream)
                .collect(toList());

但是如果 lookupFunction 怎么办?返回了 Collection<Function>相反,我想执行 .map()每个返回的 Function秒。我该怎么做?

最佳答案

如果 lookupFunction(nvp.getName()) 返回函数集合,您可以获得该集合的流并将每个函数映射到将其应用于 NameValuePair 的结果:

List<NameValuePair> newParamPairs = paramPairs.stream()
            .flatMap((NameValuePair nvp) -> lookupFunction(nvp.getName()).stream().map(func -> func.apply(nvp)))
            .flatMap(Collection::stream)
            .collect(toList());

关于java - 将函数列表应用于 Java 流 .map() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30779670/

相关文章:

java - 从 Spring RESTful 服务运行 Spark 作业

c++ - 用 lambda 初始化 std::unique_ptr 的 std::vector

c++ - QtConcurrent::run with lambda on mac os 没有匹配函数

python - 如果满足 lambda 条件,则删除整个列表

haskell - Lambda 微积分 (λa.b)((λx.xx)(λx.xx))

java - 语法错误,插入 "EnumBody"以完成 BlockStatement

java - 运行 Spring WebApp 时代码状态 406

java - Maven 构建要求提供日志文件和(权限被拒绝)

spring - 如何将 IoC 注入(inject) Kotlin 顶级函数?我什至使用 IoC 容器吗?

scala - 在 scala 中递归构建列表的挑战