Ich muss die Häufigkeit der Wörter im Array zählen. Und handle result (ich denke es muss ein entrySet sein) ... Auch eine Reihenfolge des entrySet ist wichtig. Also ich nehme an, dass Array muss in LinkedHashMap ...Java 8-Stream. Konvertiere Array in LinkedHashMap und arbeite weiter mit dem EintragSet im Single-Stream
Map<String, Integer> map = new LinkedHashMap<>();
for(String word : words) {
Integer count = map.get(word);
count = (count == null) ? 1: ++count;
map.put(word, count);
}
Ich habe die nächste Lösung, aber die Reihenfolge wird nicht respektiert. Und ist es möglich, diesen Stream ohne Sammelvorgang zu verwenden (aber mit map oder flatMap)?
Map<String, Long> collect =
wordsList.stream().collect(groupingBy(Function.identity(), counting()));
Vielen Dank.
Warum denken Sie, diese groupingBy Sammler eine LinkedHashMap schaffen sollte? Gibt es keinen anderen Kollektor, der nach Gruppen gruppiert, sondern die Art der zu erstellenden Map angibt? Hast du den Javadoc der Sammler gelesen? Sammler sieht gut aus für meine Aufgabe –
@JBnizet, wie ich groupingBy verstehen, aber es nicht schaffen LinkedHashMap ... Ich frage nur, wie es zu machen, um zu halten ... und wie Verwendung gleichen Strom fortsetzen, aber mit neuen konvertierten Artikeln ... –
Ich verstehe das. Mein Punkt ist, dass Sie, wenn Sie nur das Javadoc lesen, die Antwort selbst finden könnten. Das Lesen der Dokumentation ist der Schlüssel, um ein autonomer, produktiver Programmierer zu werden. –