単語リストのテキストファイルがあります。そのファイルから最小、最大、平均の単語長を取得したいと思います。私は、最大印刷し、期待どおりに動作しますラムダ式を使用して単語の平均長を取得する方法
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()
);
をもminよテストのための私の主な方法で
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();
}
}
:
私はストリーム方式を持っています。
質問:
それは私が最小値と最大値で行ったように単語の長さの平均値を取得することはできますか?どちらの場合も、はいまたはいいえ、それを行う方法(ラムダ式としてのみ)?
.reduce(0、(i、c) - > c + i.length())を使用して行数で割ります。 –
ヒント:あなたのファイルが本当に大きく、たくさんの行がある場合は、reduceの代わりにcollectを使用してください。 –
@JoshuaKあなたの貢献にもお礼を言います。私は以下の答えを見つけました –