【发布时间】:2020-02-09 10:36:44
【问题描述】:
我有一个Map<String, Set<String>>,假设它是
{"a": {"a1", "a2", "a3"}, "b": {"b1", "b2", "b3"}, "c": {"c1", "c2"}, "d": {}}
我有一组映射键的流,我想将流式集合的每个元素平面映射到我的映射中相应值集的元素,例如
输入流:
{"a","b"}
{"a","c"}
{"b","c","d"}
输出流:
//first set
{"a1","b1"}
{"a1","b2"}
{"a1","b3"}
{"a2","b1"}
{"a2","b2"}
{"a2","b3"}
{"a3","b1"}
{"a3","b2"}
{"a3","b3"}
//second set
{"a1","c1"}
{"a1","c2"}
{"a2","c1"}
{"a2","c2"}
{"a3","c1"}
{"a3","c2"}
//third set would be flatmapped to nothing, as "d" is mapped to an empty set
如何使用 Java8 流来做到这一点?
仅使用 Java SE 8 API 有更好的方法吗?
【问题讨论】:
-
没有。你想要所有的组合。流与元素一起工作,一次一个。您不能组合流中其他地方的元素。
-
是的,正如@Bohemian Streams 所说的那样,一次可以使用元素,你想要它的所有组合,所以你不能使用流
-
比什么更好的方法?你的尝试是什么样的?
标签: java java-8 java-stream flatmap