如何使用流将地图值聚合到集合中
是否有一些简单的方法如何转换Map<Key, List<Value>>
为Set<Value>
获取一组嵌套在地图中的所有唯一元素?我知道这应该可以使用,reduce
或者flatmap
我正在努力寻找正确的组合。
我知道我可以使用 for 循环执行此操作,但我想使用流执行此操作。
回答
Set<Value> set = map.values().stream()
.flatMap(List::stream)
.collect(Collectors.toSet());
Set
不会添加已经存在的值,因此您必须确保您的Value
对象具有正确的equals()
方法。
编辑: List::stream
相当于list -> list.stream()
根据这篇文章的功能。