Voglio contare i diversi elementi di un ruscello e mi chiedo il motivo per cuielementi di conteggio di un flusso
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));
non funziona. Eclipse mi dice
Il metodo toMap (Funzione, Funzione, BinaryOperator) nel tipo I collezionisti non è applicabile per gli argomenti ((S) -> {}, int, Integer :: sum)
A proposito, so che la soluzione:
Map<String, Long> counter2 = stream.collect(Collectors.groupingBy(s -> s, Collectors.counting()));
Così ho due domande:
- Qual è esimo e errore nel mio primo approccio?
- Come implementereste un simile contatore?
EDIT: Ho risolto la prima domanda da solo:
Map<String, Integer> counter1 = stream.collect(Collectors.toMap(s -> s, s -> 1, Integer::sum));
Java si aspetta una funzione come secondo argomento.
Se hai risolto la domanda da solo, scrivi una risposta invece di modificare la domanda. –
@TagirValeev È solo la prima parte. Una risposta non dovrebbe rispondere alla domanda completa? Voglio anche che la gente non si preoccupi più di dirmi cosa ho fatto di sbagliato. –
http://stackoverflow.com/questions/25441088/group-by-counting-in-java8-stream-api –