Flattening um Iterable <Iterable <T>> na Guava
Tem algumaflatten
no Guava - ou uma maneira fácil de converter umIterable<Iterable<T>>
para umIterable<T>
?
Eu tenho umMultimap<K, V>
[sourceMultimap] e quero retornar todos os valores em que a chave corresponde a algum predicado [keyPredicate]. Então, no momento eu tenho:
Iterable<Collection<V>> vals = Maps.filterKeys(sourceMultimap.asMap(), keyPredicate).values();
Collection<V> retColl = ...;
for (Collection<V> vs : vals) retColl.addAll(vs);
return retColl;
Eu olhei os documentos do Goiaba, mas nada pulou. Estou verificando que não perdi nada. Caso contrário, extrairei minhas três linhas em um método genérico achatado curto e deixarei assi