Java flux: flux Collect <int []> à la liste <int []>

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é

Processus :: getEventList renvoie une liste d' Eventobjets

event.getPropertie("whitelist")retourne un Propertyobjet 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 eventListcomme suit

List<int[]> whiteLists = processes.stream()
                                  .flatMap(p -> p.getEventList().stream())
                                  .map(event -> event.getPropertie("whitelist"))
                                  .map(propertie -> propertie.getIntArray())
                                  .collect(Collectors.toList());

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=341456&siteId=1
conseillé
Classement