findFirst, max, reduce đều trả Optional — nối tiếp thay vì mở hộp
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ả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.
Vì sao một chuỗi Stream không chạy gì cho tới phép cuối, từng phần tử đi hết chuỗi rồi mới tới phần tử sau, và thứ tự phép quyết định số lần tính toán.