Nội dung
Danh sách bài học
- 01~22 phút
Lambda và functional interface — hàm trở thành giá trị
Lambda expression, functional interface (SAM), 4 interface chuẩn trong java.util.function, method reference. Vì sao Java 8 cần lambda, cơ chế invokedynamic bên dưới, và quy tắc effectively final.
- 02~20 phút
Stream basics — pipeline lazy và terminal operation
Stream không phải collection. Cơ chế lazy evaluation, intermediate vs terminal operation, element flow qua pipeline, short-circuit. Vì sao code không có terminal op không chạy gì cả.
- 03~25 phút
map / filter / reduce — ba operation cốt lõi
Ba operation nền tảng của functional programming: filter (lọc), map (biến đổi), reduce (gộp). Collectors.toList/toMap/groupingBy/partitioningBy. Viết 80% task aggregate mà không cần loop.
- 04~22 phút
Stream nâng cao — flatMap, takeWhile, parallel caveat
flatMap cho stream lồng, takeWhile/dropWhile (Java 9+), peek debug, và parallel stream — khi nào nhanh hơn, khi nào chậm hơn, và vì sao common pool là bẫy.
- 05~20 phút
Optional — xử lý null không vỡ
Optional<T> — container có hoặc không có value. API map/filter/flatMap/orElse/orElseThrow. Khi nào dùng và khi nào KHÔNG — vì Optional không phải replacement cho null ở mọi chỗ.
- 06~30 phút
Mini-challenge: Sales report với stream pipeline
Bài thực hành khép lại Module 9 — phân tích 10k bản ghi sales bằng stream chain: lọc, group, aggregate, top-N, output báo cáo.