Java 8: fusion des listes avec des flux API
J'ai la situation suivante
Map<Key, ListContainer> map;
public class ListContainer{
List<AClass> lst;
}
J'ai fusionner les listes lst
de la ListContainer
objets à partir d'un Map
carte.
public static void main(String args[]){
List<AClass> alltheObjectsAClass = map.values().stream(). //continue....
}
Une idée de comment, à l'aide de Java 8 flux API?
- Pouvez-vous donner un exemple de ce que tu veux dire avec la fusion? Dire que votre carte est
{a: [1,2], b[3,4]}
, voulez-vous de la chaîne d'eux, comme[1,2,3,4]
, ou faire une liste de listes,[[1,2],[3,4]]
, ou zip les[[1,3],[2,4]]
? Aussi, vous êtes conscient qu'une Carte n'a pas d'ordre, et vous? - Je veux que le résultat soit
[1,2,3,4]
, des ménagères! - Si
ListContainer
seulement enroule uneList<T>
ensuite, vous pouvez remplacerMap<Key, ListContainer>
avecMap<Key, List<T>>
InformationsquelleAutor mat_boy | 2014-04-16
Vous devez vous connecter pour publier un commentaire.
Je pense que
flatMap()
est ce que vous cherchez.Par exemple:
.flatMap(Collection::stream)
n'est pas possible ici?ListContainer
est encapsulé (c'est à dire a un getter pourlst
), vous pouvez décomposer les.flatMap(->)
en.map(ListContainer::getLst)
.flatMap(Collection::stream)
.flatMap(Collection::stream)
est pas possible serait le mieux, je pense. Devrait être plus stable.Alternative: Stream.concat()