我将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());