猿问

如何使用 Java 流展平地图值

我是 Java 流的新手,手头有问题。我有一张这样的地图:

Map<String, List<String>> specialProductsMap

我想将映射值展平为一个集合,该集合包含specialProductsMap. 我如何使用 Java Streams 执行此操作?


慕尼黑的夜晚无繁华
浏览 141回答 3
3回答

心有法竹

您可以使用flatMap操作员来完成这件事。这是它的样子。Set<String>&nbsp;valueSet&nbsp;=&nbsp;specialProductsMap.values().stream() &nbsp;&nbsp;&nbsp;&nbsp;.flatMap(List::stream) &nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toSet());

波斯汪

首先从地图中获取值列表,然后像这样使用流 apiSet<String>&nbsp;setOfString&nbsp;=&nbsp;specialProductsMap.values().stream().flatMap(list->list.stream()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toSet());或者像这样使用方法参考Set<String>&nbsp;setOfString&nbsp;=&nbsp;specialProductsMap.values().stream().flatMap(List::stream) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toSet());

PIPIONE

您必须流传您的价值观:Stream<List<String>>&nbsp;myStream&nbsp;=&nbsp;specialProductsMap.values().stream();然后压平它:Stream<String>&nbsp;myData&nbsp;=&nbsp;myStream.flatMap(List::stream);然后收集在一个集合中:Set<String>&nbsp;=&nbsp;myData.collect(Collectors.toSet());
随时随地看视频慕课网APP

相关分类

Java
我要回答