-3
votes

Java Streams Group par fonction

2  one/two/three        N1
4  one/two/three/four   N11
5  one                  N2

4 commentaires

Comment le champ Notes est pris en compte dans votre sortie N1 pour 2, N2 pour 4.?


Pas de changement pour le champ de note. il sera le même record que le champ ID


Pas clair ce que vous voulez faire avec les notes ... Pourquoi N1 dans le premier cas? Pourquoi N2 dans la seconde?


Désolé j'ai mis à jour la question maintenant .. c'est une erreur en question maintenant je mises à jour


3 Réponses :


0
votes

Le code ci-dessous, xxx pré>

lorsque je le regroupe par ID, P>

{2=[One, Two, Three], 4=[One, Two, Three, Four], 5=[One]}


1 commentaires

vous ne recevriez pas la sortie comme [un, deux, trois] dans la valeur à l'aide du code partagé et que la clarification posée dans les commentaires est quelque chose que l'OP doit fournir, sur la base duquel vous pouvez déterminer le Notes Valeur de colonne.



1
votes

Ceci peut être obtenu en utilisant des flux de la manière suivante. Ici, je suppose que les champs sont une liste code>. J'ai fourni la définition du champ code> code> ci-dessous. XXX PRE>

@AllArgsConstructor
@Getter
public class Field {

    private int id;
    private String desc;
    private String notes;

    @Override
    public String toString() {
        return String.format("%d\t\t%s\t\t%s", id, desc, notes);
    }
}


2 commentaires

J'ai constaté que j'essaye de citer cela trop souvent dans les suggestions de révision également, que mapper Operation Cam invoque une fonction également. Déplacez cette logique à une fonction, puis il pourrait avoir plus de sens à l'écrire fonctionnellement. De l'autre côté, si la note et l'ID sont soi-disant identiques, vous pouvez grouper en utilisant les deux d'entre eux et en aval de la cartographie de la jointure de la description. Un peu plus de travail, mais propre imho.


Je sais, car c'est à des fins de démonstration, je n'essaye pas vraiment de séparer les choses en plusieurs fonctions. Mais je suis d'accord à 100% que ce serait plus propre. Je n'ai pas trouvé de groupe par note et ID car cela n'a pas été mentionné.



1
votes

Exemple de mise en œuvre Utilisation de Lombok Annotations:

MyTest.Abc(id=2, desc=one/two/three, notes=N1)
MyTest.Abc(id=4, desc=one/two/three/four, notes=N11)
MyTest.Abc(id=5, desc=one, notes=N2)


1 commentaires

Sans null et est égal (avec hashcode ), on peut collectors.groupingby (x -> arranges.aslist (x.getid (x.getid ), x.getnotes ())) puis dans l'entrée (). Stream (). Plan (// Utiliser e.getkey (). Obtenez (0) ...)