Guava中是否有flatten
方法 - 或將Iterable<Iterable<T>>
轉換爲Iterable<T>
的簡單方法?Flattable a Iterable <Iterable<T>> Guava
我有一個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;
我看過了番石榴文檔,但沒有跳出來。我只是檢查我沒有錯過任何東西。否則,我會將我的三條線提取到一個簡短的扁平通用方法中,並保持原樣。
非常感謝 - 不知道我是怎麼錯過它的! – 2011-05-10 11:35:34
我猜想這是因爲這只是一個級別的連接,而不是真正變平:) – 2011-05-10 17:05:28
另外,如果正在從番石榴轉換中生成一個集合,則可以使用FluentIterable transformAndConcat:http://docs.guava-libraries.googlecode。 com/git/javadoc/com/google/common/collect/FluentIterable.html#transformAndConcat(com.google.common.base.Function) – 2014-12-08 18:51:52