Existe-t-il une méthode flatten
en goyave - ou un moyen facile de convertir un Iterable<Iterable<T>>
en un Iterable<T>
?Aplatissement d'un Iterable <Iterable<T>> dans Guava
J'ai un Multimap<K, V>
[sourceMultimap] et je veux retourner toutes les valeurs où la clé correspond à un prédicat [keyPredicate]. J'ai donc pour le moment:
Iterable<Collection<V>> vals = Maps.filterKeys(sourceMultimap.asMap(), keyPredicate).values();
Collection<V> retColl = ...;
for (Collection<V> vs : vals) retColl.addAll(vs);
return retColl;
J'ai regardé les docs de Guava, mais rien n'a sauté. Je vérifie juste que je n'ai rien manqué. Sinon, je vais extraire mes trois lignes dans une méthode générique courte et aplatie.
Merci beaucoup - je ne sais pas comment je l'ai manqué! –
Je suppose que c'est parce que ce n'est qu'une concaténation de niveau, pas vraiment aplatie :) –
Aussi si une collection est générée à partir d'une transformée de goyave, vous pouvez utiliser FluentIterable transformAndConcat: http: //docs.guava-libraries.googlecode. com/git/javadoc/com/google/commun/collect/FluentIterable.html # transformAndConcat (com.google.common.base.Function) –