41 votes

Aplatir un Iterable <Iterable<T> > en goyave

Est-il un flatten méthode de Goyave, ou un moyen facile de convertir un Iterable<Iterable<T>> d'un Iterable<T>?

J'ai un Multimap<K, V> [sourceMultimap] et je veux retourner toutes les valeurs de la clé correspondant à certains prédicat [keyPredicate]. Donc pour le moment j'ai:

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é à travers la Goyave docs, mais rien n'a sauté. Je suis juste vérifier que je n'ai pas manqué de rien. Sinon, je vais extraire mes trois lignes dans un court aplatir méthode générique et de la laisser comme ça.

74voto

Sean Parsons Points 2132

Iterables.concat satisfait à cette exigence:
static <T> Iterable<T> concat(Iterable<? extends Iterable<? extends T>> inputs)

http://guava-libraries.googlecode.com/svn/tags/release09/javadoc/com/google/common/collect/Iterables.html#concat(java.lang.Iterable)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X