Ho un file di testo elenco di parole, voglio ottenere lunghezze di parole min, max e medie da quel file.Come ottenere la lunghezza media delle parole utilizzando Lambda Expression
Ho un metodo stream:
public static Stream<String> readWords(String filename) {
try {
BufferedReader reader = new BufferedReader(new FileReader(filename));
Stream<String> stringStream = reader.lines();
return stringStream;
} catch (IOException exn) {
return Stream.<String>empty();
}
}
Nel mio metodo principale per la prova che sto stampando max e min
System.out.println(readWords(filename)
.min(Comparator.comparing(s -> s.length()))
.get()
.length()
);
System.out.println(readWords(filename)
.max(Comparator.comparing(s -> s.length()))
.get()
.length()
);
funziona come previsto.
Domande:
E 'possibile ottenere la media della lunghezza di parola come ho fatto in min e max? In entrambi i casi si o no, come farlo (solo come espressione Lambda)?
è possibile utilizzare .reduce (0, (i, c) -> c + i.length()) e dividerlo per numero di righe. –
suggerimento: se il tuo file è davvero grande e ha un sacco di righe utilizzare raccogliere invece di ridurre –
@JoshuaK grazie anche per il tuo contributo, ho trovato la risposta sotto –