该
lines()方法将为您提供一行流,而不是单词。有了之后
Stream,调用
flatMap用单词替换行,并提供lambda表达式来拆分单词:
Stream<String> stringStream = reader.lines().flatMap( line -> Stream.of(line.split("\s+")));这将纠正您对
max和的实现
min。它还会影响您希望实施的任何平均计算的正确性。
要获得平均值,您可以调用
mapToInt将单词流映射到它们的长度(产生一个
IntStream),然后调用
average,返回一个
OptionalDouble。
System.out.println(readWords(filename) .mapToInt( s -> s.length() ) // or .mapToInt(String::length) .average() .getAsDouble());



