Java Language Creazione di una mappa di frequenza

Esempio

Il collector groupingBy(classifier, downstream) consente la raccolta di elementi Stream in una Map classificando ciascun elemento in un gruppo ed eseguendo un'operazione downstream sugli elementi classificati nello stesso gruppo.

Un classico esempio di questo principio è l'utilizzo di una Map per contare le occorrenze di elementi in un Stream . In questo esempio, il classificatore è semplicemente la funzione di identità, che restituisce l'elemento così com'è. L'operazione downstream conta il numero di elementi uguali, usando il counting() .

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

L'operazione downstream è essa stessa un collector ( Collectors.counting() ) che opera su elementi di tipo String e produce un risultato di tipo Long . Il risultato della chiamata al metodo collect è una Map<String, Long> .

Questo produrrebbe il seguente risultato:

banane = 1
arancione = 1
mela = 2