我将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())返回函数的Collection,则可以获取该Collection的Stream并将每个函数映射到将其应用于NameValuePair的结果:

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

10-06 04:12