Maison >Java >javaDidacticiel >Comment compter les occurrences d'éléments dans un flux Java à l'aide de « groupBy() » ?

Comment compter les occurrences d'éléments dans un flux Java à l'aide de « groupBy() » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-03 10:05:17569parcourir

How do I count occurrences of elements in a Java Stream using `groupBy()`?

Comptage des occurrences avec GroupBy dans Java Streams

L'API Java Stream fournit des mécanismes puissants pour manipuler et agréger efficacement les données. Une tâche courante consiste à compter les occurrences d'éléments dans un flux. Pour y parvenir avec la méthode groupBy(), il faut exploiter un collecteur supplémentaire.

Considérez l'extrait de code suivant, qui vise à collecter les éléments d'un flux dans une carte où les clés représentent des éléments uniques et les valeurs représentent leurs occurrences :

List<String> list = Arrays.asList("Hello", "Hello", "World");

// Desired output:
// {Hello=2, World=1}

Pour ce faire, nous pouvons utiliser la méthode groupBy() avec un collecteur Collectors.counting() pour effectuer le comptage :

import java.util.*;
import java.util.stream.*;

class Test {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        list.add("Hello");
        list.add("Hello");
        list.add("World");

        Map<String, Long> counted = list.stream()
            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

        System.out.println(counted);
    }
}

Explication :

  • Collectors.groupingBy(Function.identity()) : regroupe les éléments en fonction de leur identité, en traitant efficacement chaque élément unique comme une clé.
  • Collectors.counting() : calcule le nombre d'occurrences pour chacun groupe.

La carte comptée résultante aura des clés comme éléments et des valeurs comme leurs comptes respectifs :

{Hello=2, World=1}

Alternativement, pour des considérations d'efficacité dans certains scénarios, vous pouvez explorer en utilisant des collecteurs .groupingByConcurrent. N'oubliez pas d'évaluer si votre cas d'utilisation spécifique correspond aux exigences de sécurité du regroupement simultané.

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