java - 如何使用流将映射值聚合到集合中

有没有一些简单的方法来转换Map<Key, List<Value>>进入Set<Value>获取一组嵌套在 map 中的所有独特元素?我知道这应该可以使用 reduceflatmap但我正在努力寻找正确的组合。

我知道我可以使用 for 循环来执行此操作,但我想使用流来执行此操作。

最佳答案

Set<Value> set = map.values().stream()
                             .flatMap(List::stream)
                             .collect(Collectors.toSet());

Set 不会添加已经存在的值,因此您必须确保您的 Value 对象具有适当的 equals() 方法。


编辑:根据this post,List::stream 在功能上等同于list -> list.stream() .

https://stackoverflow.com/questions/66396769/

相关文章:

r - 在列标题和成对变量中嵌入数据的数据透视表

aws-lambda - 使用排序键删除 DynamoDb

javascript - 如何在 NEXT JS 中的路由之间传递状态?

c++ - 如何将 Arduino 的模拟输入读数从草图转换为 .WAV

javascript - 如何将共享一个公共(public)键的两个对象的两个值合并在一起并返回它?

unity3d - 有没有办法在着色器中合并 Unity 中的纹理?

python - 如何链接在两个列表之间创建连接?

javascript - 翻转所有卡片,但想一张一张地翻转

java - 追加java静态变量

c++ - SFINAE 无法正确判断方法是否存在