我是 Java 流的新手,手头有问题。我有一张这样的地图:Map<String, List<String>> specialProductsMap我想将映射值展平为一个集合,该集合包含specialProductsMap. 我如何使用 Java Streams 执行此操作?
3 回答
心有法竹
TA贡献1866条经验 获得超5个赞
您可以使用flatMap
操作员来完成这件事。这是它的样子。
Set<String> valueSet = specialProductsMap.values().stream() .flatMap(List::stream) .collect(Collectors.toSet());
波斯汪
TA贡献1811条经验 获得超4个赞
首先从地图中获取值列表,然后像这样使用流 api
Set<String> setOfString = specialProductsMap.values().stream().flatMap(list->list.stream()) .collect(Collectors.toSet());
或者像这样使用方法参考
Set<String> setOfString = specialProductsMap.values().stream().flatMap(List::stream) .collect(Collectors.toSet());
PIPIONE
TA贡献1829条经验 获得超9个赞
您必须流传您的价值观:
Stream<List<String>> myStream = specialProductsMap.values().stream();
然后压平它:
Stream<String> myData = myStream.flatMap(List::stream);
然后收集在一个集合中:
Set<String> = myData.collect(Collectors.toSet());
添加回答
举报
0/150
提交
取消