java - 在 Guava 中展平一个 Iterable<Iterable<T>>

标签 java collections guava flatten

有没有flatten Guava 中的方法 - 或转换 Iterable<Iterable<T>> 的简单方法到 Iterable<T> ?

我有一个 Multimap<K, V> [sourceMultimap] 我想返回键匹配某个谓词 [keyPredicate] 的所有值。所以目前我有:

Iterable<Collection<V>> vals = Maps.filterKeys(sourceMultimap.asMap(), keyPredicate).values();

Collection<V> retColl = ...;
for (Collection<V> vs : vals) retColl.addAll(vs);
return retColl;

我查看了 Guava 文档,但没有任何内容。我只是在检查我没有错过任何东西。否则,我会将我的三行代码提取到一个简短的 flatten 泛型方法中并保持不变。

最佳答案

Iterables.concat method满足该要求:

public static <T> Iterable<T> concat(Iterable<? extends Iterable<? extends T>> inputs)

关于java - 在 Guava 中展平一个 Iterable<Iterable<T>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5949091/

相关文章:

java - 在单元测试中模拟注入(inject)字段

.NET集合和大对象堆(LOH)

Java 按特定顺序放入树形图

java - Guava/Google Collections 的向后兼容性如何?

javascript - 在Javascript中获取Java设置的cookie

java - 自定义 ListView 中的复选框

java - Java中基于String的目标变量

java - 'compareTo' 比较用例

java - Guava 。 CharStreams 检查 null

java - 为缓存创建全局(JVM)最大权重的简单方法?