IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Java 8 streams, groupingBy et mapping


Sujet :

avec Java

  1. #1
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut Java 8 streams, groupingBy et mapping
    Hello je veux construire une map "Multimap<String, EmmOffer>" je n'arrive pas comprendre pour quoi cela fonctionne pas?

    List<OfferList> emmOfferResponses = ...
    cela est fonctionnel alors la 2em écriture est pas fonctionnel?!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            emmOfferResponses.stream().collect(
                Collectors.groupingBy(OfferList::getInteractionPointName)
            );
     
    => Multimap<String, OfferList>
    Non fonctionnel et je sais pas pour quoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        emmOfferResponses.stream().
            collect(
                Collectors.groupingBy(OfferList::getInteractionPointName),
                Collectors.mapping(OfferList::getRecommendedOffers))
            ); 
     
    => Multimap<String, EmmOffer>

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Je dirais, parce que collect() prend un paramètre et que mapping() en prend deux ? Du coup en faisant l'inverse, ça ne marche pas trop...

    groupingBy() ne peut pas tout faire en même temps, à un moment ils ont dû se limiter à un certain nombre de fonctionnalités.
    Non il ne peut pas grouper puis mapper en un claquement de doigt sans rien faire soi-même. Ce n'est pas assez souvent utile. Le programmeur qui veut ça va devoir travailler plus.

    Par défaut, groupingBy(), regroupe les éléments du groupe en les mettant dans une List. Autrement dit,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Collectors.groupingBy(OfferList::getInteractionPointName)
    est équivalent à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Collectors.groupingBy(OfferList::getInteractionPointName, Collectors.toList())
    Mais tu peux mettre ce que tu veux à la place de Collectors.toList(). Comme par exemple un truc qui va d'abord mapper les éléments vers autre chose, et ensuite les regrouper dans une List.

    Donc si on imagine que ta méthode OfferList.getRecommendedOffers() renvoie un EmmOffer, alors tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Map<String, List<EmmOffer>> map =
    emmOfferResponses.stream().collect(
      Collectors.groupingBy(
        OfferList::getInteractionPointName,
        Collectors.mapping(
          OfferList::getRecommendedOffers,
          Collectors.toList()
        )
      )
    );
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Java 8, streams et reduce à trois arguments
    Par ptyxs dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 31/12/2017, 03h15
  2. Application java en interaction avec Google maps
    Par angelange dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 20/06/2011, 09h34
  3. Réponses: 0
    Dernier message: 13/10/2008, 17h39
  4. HibernateUtil.java et les fichiers de Mapping
    Par sup dans le forum Hibernate
    Réponses: 4
    Dernier message: 17/09/2007, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo