Maison > Java > javaDidacticiel > Comment puis-je regrouper des objets par plusieurs champs à l'aide de Java 8 Streams ?

Comment puis-je regrouper des objets par plusieurs champs à l'aide de Java 8 Streams ?

Patricia Arquette
Libérer: 2024-12-04 00:11:10
original
790 Les gens l'ont consulté

How Can I Group Objects by Multiple Fields Using Java 8 Streams?

Le regroupement par plusieurs champs dans Java 8

Le regroupement d'objets par plusieurs noms de champs est une opération courante dans la programmation Java, et cela peut être facilement réalisé à l'aide de l'API Stream de Java 8 et de la méthode Collectors.groupingBy().

Le code fourni dans la question montre comment regrouper des objets par un seul nom de champ :

Map<Integer, List<Person>> peopleByAge = people
    .collect(Collectors.groupingBy(p -> p.age,
        Collectors.mapping((Person p) -> p, toList())));
Copier après la connexion

Pour regrouper des objets par plusieurs champs, la première option consiste à enchaîner plusieurs collecteurs :

Map<String, Map<Integer, List<Person>>> map = people
    .collect(Collectors.groupingBy(Person::getName,
        Collectors.groupingBy(Person::getAge)));
Copier après la connexion

Une autre option consiste à créer une classe qui représente le regroupement critères, comme NameAge dans le code suivant :

class Person {
    record NameAge(String name, int age) { }
    public NameAge getNameAge() { return new NameAge(name, age); }
}
...
Map<NameAge, List<Person>> map = people.collect(Collectors.groupingBy(Person::getNameAge));
Copier après la connexion

Enfin, il est possible d'utiliser une bibliothèque tierce comme Apache Commons Pair pour créer un objet Paire pour le regroupement :

Map<Pair<String, Integer>, List<Person>> map =
    people.collect(Collectors.groupingBy(p -> Pair.of(p.getName(), p.getAge())));
Copier après la connexion

En tirant parti de ces techniques de regroupement, il est possible de regrouper efficacement des objets par plusieurs noms de champs dans Java 8, offrant ainsi un moyen pratique d'organiser et d'accéder aux données en fonction de critères spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal