Ich möchte die verschiedenen Elemente eines Stroms zählen und frage mich, warumCounting Elemente eines Stream-
Stream<String> stream = Stream.of("a", "b", "a", "c", "c", "a", "a", "d");
Map<String, Integer> counter1 = stream.collect(Collectors.toMap(s -> s, 1, Integer::sum));
funktioniert nicht. Eclipse sagt mir
Verfahren toMap (Funktion, Funktion, BinaryOperator) in der Art Collectors ist nicht anwendbar für die Argumente ((n) -> {}, int, Integer :: sum)
By the way, weiß ich über diese Lösung:
Map<String, Long> counter2 = stream.collect(Collectors.groupingBy(s -> s, Collectors.counting()));
So habe ich zwei Fragen:
- Was th Ein Fehler in meinem ersten Ansatz?
- Wie würden Sie einen solchen Zähler implementieren?
EDIT: löste ich die erste Frage von mir:
Map<String, Integer> counter1 = stream.collect(Collectors.toMap(s -> s, s -> 1, Integer::sum));
Java ist eine Funktion als zweites Argument erwartet.
Wenn Sie die Frage selbst gelöst haben, schreiben Sie einfach eine Antwort, anstatt die Frage zu bearbeiten. –
@TagirValeev Es ist nur der erste Teil. Soll eine Antwort nicht die ganze Frage beantworten? Ich möchte auch, dass die Leute nicht länger darüber besorgt sind, mir zu sagen, was ich falsch gemacht habe. –
http://stackoverflow.com/questions/25441088/group-by-counting-in-java8-stream-api –