Thẻ

#stream

99 Ngày Java — Ngày 60: Stream thực chiến

groupingBy hai cấp với TreeMap, flatMap xuống dòng hàng, top N bằng collectingAndThen, teeing cho min và max, toMap có merge giữ thứ tự — rồi khi nào đặt tên collector, dùng record thay tuple hay quay về vòng for, và một báo cáo từ CSV khép lại Giai đoạn 6.

25 thg 9, 202611 phút8
99 Ngày Java — Ngày 59: Parallel stream

Parallel stream là chia, làm, ghép trên ForkJoinPool chung của cả JVM: nguồn nào chia tốt, phép ghép nào đắt, mô hình N × Q để biết khi nào có lãi, vì sao I/O không bao giờ thuộc về parallel stream — và bẫy stateful lambda chỉ hỏng khi song song, cùng cách đo bằng JMH.

24 thg 9, 202610 phút4
99 Ngày Java — Ngày 57: Collectors chuyên sâu

Ba bẫy của toMap — trùng khóa, giá trị null, kiểu map; groupingBy với downstream counting/summingInt/mapping và gom nhiều cấp bằng record; partitioningBy luôn đủ hai khóa; filtering giữ nhóm rỗng, teeing gộp hai collector trong một lượt, collectingAndThen gỡ Optional của maxBy.

22 thg 9, 202611 phút2
99 Ngày Java — Ngày 56: Terminal operations

Năm họ phép kết thúc nhận ra bằng kiểu trả về, stream chỉ dùng một lần, reduce với identity trung hòa và collect cho container, toList() không sửa được — và vì sao allMatch trả true trên tập rỗng còn findAny không hứa trả phần tử đầu.

21 thg 9, 202610 phút3
99 Ngày Java — Ngày 55: Intermediate operations

Phân biệt map và flatMap bằng kiểu trả về, distinct im lặng không lọc gì nếu thiếu equals, sorted phá vỡ tính lười, peek không được đảm bảo chạy — và vì sao skip không phải cách phân trang dữ liệu từ database.

20 thg 9, 20268 phút6
99 Ngày Java — Ngày 54: Stream API nhập môn

Dây chuyền ba phần và luật không có phép kết thúc thì không chạy gì, tính lười cho ngắt sớm và dữ liệu vô hạn, vì sao lọc trước sắp sau nhanh hơn hàng chục lần — và khi nào vòng lặp vẫn thắng.

19 thg 9, 20268 phút6