Philipp:
J'essaie d'obtenir ma tête autour des flux java.
Atm Je cette construction qui ne fonctionne pas:
List<int[]> whiteLists = processes.stream()
.map(Process::getEventList)
.forEach(eventList -> eventList.stream()
.map(event -> event.getPropertie("whitelist"))
.map(propertie -> propertie.getIntArray())
.collect(Collectors.toList()));
}
La hiérarchie est:
- Processus
- un événement
- Propriété
- un événement
Processus :: getEventList renvoie une liste d' Event
objets
event.getPropertie("whitelist")
retourne un Property
objet qui as le procédégetIntArray()
event.getPropertie()
me donne un int-tableau.
Comment puis-je collectionne ces tableau dans une liste de tableaux?
Merci!
richesse:
Vous ne pouvez pas utiliser forEach()
comme il faut Consumer
, ce qui signifie qu'il consommera le flux, mais ne peut rien retourner (donc rien à recueillir).
Vous avez besoin flatMap l'interne pour diffuser eventList
comme suit
List<int[]> whiteLists = processes.stream()
.flatMap(p -> p.getEventList().stream())
.map(event -> event.getPropertie("whitelist"))
.map(propertie -> propertie.getIntArray())
.collect(Collectors.toList());