Maison  >  Article  >  Java  >  API Stream en Java 8 : Comment utiliser la classe Collectors pour le regroupement et les statistiques des collections

API Stream en Java 8 : Comment utiliser la classe Collectors pour le regroupement et les statistiques des collections

王林
王林original
2023-07-31 18:21:151103parcourir

API Stream en Java 8 : Comment utiliser la classe Collectors pour le regroupement et les statistiques des collections

Introduction :
Dans Java 8, l'API Stream est introduite, qui est un concept de programmation fonctionnelle qui nous permet de l'utiliser de manière plus efficace manière. Gérez les données de collecte de manière concise et élégante. L'API Stream fournit des fonctionnalités riches, dont l'une consiste à regrouper et à compter les collections. Cet article explique comment utiliser la classe Collectors pour obtenir cette fonctionnalité.

  1. Groupe de collections
    Dans le développement réel, nous avons souvent besoin de regrouper les collections selon un certain attribut pour faciliter le traitement ultérieur. Dans Java 8, vous pouvez utiliser la méthode groupBy() de la classe Collectors pour implémenter le regroupement de collections.

L'exemple de code est le suivant :

class Person {
    private String name;
    private String gender;
    private int age;

    public Person(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public String getGender() {
        return gender;
    }

    public int getAge() {
        return age;
    }
}

List<Person> persons = Arrays.asList(
        new Person("John", "male", 20),
        new Person("Jane", "female", 25),
        new Person("Tom", "male", 30),
        new Person("Emily", "female", 35)
);

Map<String, List<Person>> groupedByGender = persons.stream()
        .collect(Collectors.groupingBy(Person::getGender));

System.out.println(groupedByGender);

Le résultat de sortie est :

{female=[Person{name='Jane', gender='female', age=25}, Person{name='Emily', gender='female', age=35}], male=[Person{name='John', gender='male', age=20}, Person{name='Tom', gender='male', age=30}]}

Dans le code ci-dessus, nous avons d'abord créé une classe Person à titre d'exemple, qui contient les attributs de nom, de sexe et d'âge. Ensuite, une collection List d’objets Person est créée. Ensuite, convertissez la collection en flux via la méthode stream(). Enfin, utilisez la méthode groupBy() de la classe Collectors pour regrouper en fonction de l'attribut de genre de l'objet Person, et les résultats sont enregistrés dans une collection Map.

  1. Statistiques des ensembles
    En pratique, nous pouvons avoir besoin de compter les éléments de l'ensemble, comme calculer le nombre d'éléments, faire la somme, faire la moyenne, etc. L'API Stream de Java 8 fournit une série de méthodes statistiques, que nous pouvons utiliser summingInt(), averagingInt(), counting() et d'autres méthodes de la classe Collectors pour implémenter.

L'exemple de code est le suivant :

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

int sum = numbers.stream().collect(Collectors.summingInt(Integer::intValue));
double average = numbers.stream().collect(Collectors.averagingInt(Integer::intValue));
long count = numbers.stream().collect(Collectors.counting());

System.out.println("Sum: " + sum);
System.out.println("Average: " + average);
System.out.println("Count: " + count);

Le résultat de sortie est :

Sum: 15
Average: 3.0
Count: 5

Dans le code ci-dessus, nous créons d'abord une liste de type entier, qui contient une série de nombres. Ensuite, la méthode summingInt() est utilisée pour calculer la somme, la méthode averagingInt() est utilisée pour calculer la moyenne et la méthode counting() est utilisée pour calculer le nombre. Enfin, les résultats sont obtenus grâce à la méthode collect() de la classe Collectors.

Résumé :
Avec l'API Stream et la classe Collectors dans Java 8, nous pouvons effectuer des opérations de regroupement et des statistiques sur les collections de manière plus concise et élégante. Cette fonctionnalité améliore non seulement la lisibilité du code, mais améliore également considérablement la flexibilité du programme.

Ce qui précède est l'introduction de cet article au regroupement de collections et aux statistiques de l'API Stream et de la classe Collectors dans Java 8. J'espère que cela vous sera utile. Merci!

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!

Déclaration:
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