Worthäufigkeitszählung in Java 8
Wie zählt man die Häufigkeit eines Wortes in einer Liste mit Java 8?
<code class="java">List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");</code>
Das Ergebnis sollte sein:
<code class="java">{ciao=2, hello=1, bye=2}</code>
Zuerst hatte ich erwartet, die Map-and-Reduction-Methode zu verwenden, aber die tatsächliche Methode ist etwas anders.
<code class="java">Map<String, Long> collect = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));</code>
Oder für ganzzahlige Werte:
<code class="java">Map<String, Integer> collect = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));</code>
BEARBEITEN
Ich habe auch hinzugefügt, wie die Karte nach Wert sortiert wird:
<code class="java">LinkedHashMap<String, Long> countByWordSorted = collect.entrySet() .stream() .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) .collect(Collectors.toMap( Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> { throw new IllegalStateException(); }, LinkedHashMap::new ));</code>
Das obige ist der detaillierte Inhalt vonWie berechnet man Worthäufigkeiten in einer Liste mit Java 8?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!