Tôi có tệp văn bản danh sách từ, tôi muốn có độ dài từ tối thiểu, tối đa và trung bình từ tệp đó.Cách lấy độ dài trung bình của từ bằng cách sử dụng Biểu thức Lambda
Tôi có một phương pháp dòng:
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();
}
}
Trong phương pháp chính của tôi để kiểm tra tôi in max và 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()
);
nó hoạt động như mong đợi.
Câu hỏi:
Có thể lấy trung bình của độ dài từ như tôi đã làm trong phút và tối đa không? Trong cả hai trường hợp có hoặc không, làm thế nào để làm điều đó (chỉ như Lambda Expression)?
bạn có thể sử dụng .reduce (0, (i, c) -> c + i.length()) và chia cho số dòng. –
gợi ý: nếu tệp của bạn thực sự lớn và có nhiều dòng sử dụng thu thập thay vì giảm –
@JoshuaK cảm ơn bạn vì sự đóng góp của bạn, tôi đã tìm thấy câu trả lời bên dưới –