我有一个Map<String, Set<String>>
。我希望使用流API在新的Set<String>
中将此映射中的所有值。我能够得到一个Set<Set<String>>
,但是我想要的是将我的地图中所有集合的所有值放在一个集合中。使用流有可能吗?
谢谢。
答案 0 :(得分:5)
您在这里:
Set<String> allStrings = map.values()
.stream()
.flatMap(Set::stream)
.collect(Collectors.toSet());
答案 1 :(得分:1)
另一个解决方案也可以是:
Set<String> set = new HashSet<>();
map.values().forEach(set::addAll);
答案 2 :(得分:0)
您可以使用Stream.collect()
方法来实现:
Set<String> set = map.values().stream()
.collect(HashSet::new, HashSet::addAll, HashSet::addAll);
如果需要更加灵活,则应使用Stream.flatMap()
解决方案。