如何将 Set<Set<String>> 转换为 Set<String>?

-3 java stream set

假设Streams和Collections,Lambdas可以使用吗?我尝试使用 for 循环,但它没有解决我的问题。

// Set<Set<String>> to Set<String>
for(Set<String> s : set) {
    result.addAll(s);
    set.add(result);
}
Run Code Online (Sandbox Code Playgroud)

set 是一种Set<Set<String>>类型, result 是Set<String>.

Dan*_*iel 9

这是使用 Stream API 的选项:

Set<String> result = sets.stream()
    .flatMap(Collection::stream)
    .collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)

  • @GauthamM 这是一个品味问题。该方法是在“Collection”接口中声明的,因此我们不需要知道或关心它是“Set”还是其他方法。我可能会按照你说的方式去做,但我没有理由争论为什么它应该更好或更糟。 (3认同)