Java Language Créer une carte de fréquence


Exemple

Le collecteur groupingBy(classifier, downstream) permet la collecte d'éléments Stream dans une Map en classant chaque élément dans un groupe et en effectuant une opération en aval sur les éléments classés dans le même groupe.

Un exemple classique de ce principe consiste à utiliser une Map pour compter les occurrences d'éléments dans un Stream . Dans cet exemple, le classificateur est simplement la fonction d'identité, qui renvoie l'élément tel quel. L'opération en aval compte le nombre d'éléments égaux, en utilisant le counting() .

Stream.of("apple", "orange", "banana", "apple")
      .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
      .entrySet()
      .forEach(System.out::println);

L'opération en aval est elle-même un collecteur ( Collectors.counting() ) qui opère sur des éléments de type String et produit un résultat de type Long . Le résultat de l'appel de la méthode de collect est un Map<String, Long> .

Cela produirait la sortie suivante:

banane = 1
orange = 1
apple = 2