如何使用流将地图值聚合到集合中
是否有一些简单的方法如何转换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()根据这篇文章的功能。