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~22 phút
Collectors Deep — toMap, groupingBy, partitioningBy và custom Collector
Đi sâu vào Collectors utility: toMap với merge function, groupingBy lồng nhiều cấp, downstream collectors, partitioningBy, joining, và tự xây Collector.of cho use-case đặc thù.
- 07~20 phút
Parallel Stream — khi nào thực sự nhanh hơn, khi nào nguy hiểm
ForkJoinPool bên dưới parallelStream, 4 pitfall stateful/ordering/blocking/race condition, formula Doug Lea NxQ, và khi nào nên dùng CompletableFuture thay thế.
- 08~22 phút
Immutability và Functional Style — thiết kế Java không có surprise
Pure function, referential transparency, cách Java implement immutability qua final/record/List.of, pitfall final reference vs immutable content, và tổng kết module Stream & Lambda.
- 09~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.