File 130 MB, heap 61 MB: Files.lines xử lý được, readAllLines thì hết bộ nhớ
Tính lười cho phép đọc file lớn hơn cả bộ nhớ, ngắt sớm giúp không đọc phần thừa, và vì sao Files.lines là một trong số ít Stream bắt buộc phải đóng.
Tính lười cho phép đọc file lớn hơn cả bộ nhớ, ngắt sớm giúp không đọc phần thừa, và vì sao Files.lines là một trong số ít Stream bắt buộc phải đóng.
Bảy phép kết của Stream trả về Optional, cách nối chúng vào chuỗi bằng map và filter, và vì sao isPresent cộng get chỉ là câu if viết dài hơn.
Bốn phép đo JMH trên máy 16 nhân: khi nào song song thắng bảy lần, khi nào thua hai nghìn lần, và ba câu hỏi để quyết định trước khi gõ chữ parallel.
Bốn hàm của một Collector, dấu vết thật cho thấy khi nào combiner được gọi, và vì sao viết nó sai vẫn không lộ ra trong test.
Collector con là chỗ groupingBy trở nên mạnh, partitioningBy luôn trả đủ hai khoá, và toMap ném ngoại lệ khi khoá trùng — có lý do.
Ba tình huống thật cần flatMap, mẹo giữ được thông tin của cả hai tầng, và khác biệt giữa filter với takeWhile mà kết quả tự nói ra.