Maison >Java >javaDidacticiel >Comment puis-je utiliser Java 8 Streams pour compter efficacement les occurrences d'éléments en double ?

Comment puis-je utiliser Java 8 Streams pour compter efficacement les occurrences d'éléments en double ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-15 04:29:021047parcourir

How can I use Java 8 Streams to efficiently count occurrences of duplicate elements?

Comptage des occurrences avec les flux Java 8 à l'aide de groupBy

Dans les flux Java 8, la méthode groupBy vous permet de regrouper des éléments en fonction d'une propriété particulière ou de la valeur. Lorsqu'il est combiné avec un autre collecteur, tel que le comptage, vous pouvez compter efficacement les occurrences d'éléments en double dans un flux.

Prenons un exemple :

List<String> list = Arrays.asList("Hello", "Hello", "World");
Map<String, Long> wordToFrequency = list.stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

Dans cet exemple, nous utilisons le méthode collect avec une surcharge qui prend un Collector comme argument. Dans le collecteur, nous utilisons groupingBy pour regrouper les éléments en fonction de leur valeur de chaîne (la fonction d'identité). Nous combinons ensuite cela avec Collectors.counting() pour compter les occurrences de chaque chaîne unique.

En conséquence, nous obtenons une carte où chaque clé est une chaîne unique et la valeur correspondante est le nombre d'occurrences dans la liste. Dans ce cas, la carte contiendrait :

{Hello=2, World=1}

Cette approche est très efficace et facile à utiliser, ce qui la rend adaptée à divers scénarios dans lesquels vous devez compter les occurrences d'éléments dans un flux en fonction d'une propriété spécifique. . N'oubliez pas que vous pouvez également tirer parti de groupingByConcurrent pour améliorer les performances, le cas échéant.

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