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

问题描述 投票:0回答:2

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

// Set<Set<String>> to Set<String>
for(Set<String> s : set) {
    result.addAll(s);
    set.add(result);
}

set 是

Set<Set<String>>
类型,结果是
Set<String>
类型。

java stream set
2个回答
9
投票

这是使用 Stream API 的选项:

Set<String> result = sets.stream()
    .flatMap(Collection::stream)
    .collect(Collectors.toSet());

0
投票

修复当前实现所需要做的就是删除

set.add(result)
行。

// Set<Set<String>> to Set<String>
for(Set<String> s : set) {
    result.addAll(s);
    // set.add(result);
}

这是将迭代的每个步骤的所有结果添加回集合中,添加不必要的元素并无休止地增加其大小。

© www.soinside.com 2019 - 2024. All rights reserved.