使用 Guava 连接 ImmutableSet

我已经习惯了 C#,IEnumerable<T>.SelectMany但发现自己使用 Google 的 Guava 库涉足了一些 Java 代码。番石榴中是否有等同于 SelectMany 的东西?

示例:如果我有这样的流/映射结构

collections
            .stream()
            .map(collection -> loadKeys(collection.getTenant(), collection.getGroup()))
            .collect(GuavaCollectors.immutableSet());

whereloadKeys返回类似的东西ImmutableSet<String>,这个函数会返回ImmutableSet<ImmutableSet<String>>,但我想把它们压平成一个ImmutableSet<String>

最好的方法是什么?


GCT1015
浏览 97回答 1
1回答

跃然一笑

您可以使用Stream::flatMap方法:collections &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.flatMap(collection&nbsp;->&nbsp;loadKeys(collection.getTenant(),&nbsp;collection.getGroup()).stream()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(ImmutableSet.toImmutableSet());请注意,您得到了方法stream外的loadKeys结果。结果应该ImmutableSet<String>假设loadKeys返回一个集合。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java