Tổng quan module — Stream API & Lambda
Bản đồ học tập module Stream API & Lambda: lambda, functional interface, stream pipeline, collectors, optional, parallel. Biết trước để học đúng thứ tự.
TL;DR: Module này dạy cách viết Java theo functional style — từ lambda cơ bản, method reference, stream pipeline lazy, collectors nâng cao, Optional, đến parallel stream. Đây là nền tảng để đọc hiểu code enterprise modern và framework như Spring WebFlux, Project Reactor.
Sau module này bạn sẽ làm được gì
flowchart TD
A["Lambda &<br/>Functional Interface"]
B["Method Reference &<br/>invokedynamic"]
C["Stream Basics<br/>(lazy pipeline)"]
D["map / filter / reduce"]
E["Stream nâng cao"]
F["Optional"]
G["Collectors Deep"]
H["Parallel Stream"]
I["Immutability &<br/>Functional Style"]
J["Mini-challenge<br/>Sales Report"]
A --> C
B --> C
C --> D
D --> E
D --> G
C --> H
E --> I
G --> J
H --> JKhi hoàn thành module, bạn đạt được 5 outcomes sau (self-assessment cuối module match 1-1):
- Explain cơ chế lazy evaluation và phân biệt intermediate vs terminal operation trong Stream API
- Implement stream pipeline với filter/map/reduce/collect trên collection và infinite source
- Choose đúng functional interface và method reference cho từng stream operation
- Diagnose pitfall stream phổ biến: missing terminal op, stream reuse
IllegalStateException, stateful op trên infinite stream - Compare imperative loop vs functional stream về readability, memory, và short-circuit behaviour
Lộ trình các bài
| Bài | Chủ đề | Mục tiêu |
|---|---|---|
| 01 | Lambda & Functional Interface | Explain @FunctionalInterface, SAM, 4 built-in interface cốt lõi |
| 02 | Method Reference & invokedynamic | Explain 4 loại method reference, cơ chế invokedynamic bytecode |
| 03 | Stream basics — pipeline lazy | Explain lazy evaluation, intermediate vs terminal, element-by-element |
| 04 | map / filter / reduce | Implement 3 op cốt lõi, predict output, chọn đúng variant |
| 05 | Stream nâng cao | Implement flatMap, distinct, sorted, takeWhile/dropWhile |
| 06 | Optional | Diagnose NPE pattern, implement Optional chain thay null check |
| 07 | Collectors deep | Implement groupingBy, partitioningBy, joining, custom Collector |
| 08 | Parallel Stream | Compare sequential vs parallel, diagnose race condition, chọn đúng khi nào dùng |
| 09 | Immutability & Functional Style | Explain immutable value object, pure function, compose pipeline |
| 10 | Mini-challenge Sales Report | Implement báo cáo sales cuối module — tổng hợp toàn bộ |
| 11 | Tổng kết module | Recap + self-assessment 1-1 với 5 outcomes |
Prerequisite
Bạn cần hoàn thành module trước (hoặc tự học tương đương) trước khi vào module này:
- Java Foundations — syntax cơ bản, generics, collections (
List,Map,Set), exception handling. Module này dùngList.of,ArrayList, generic type parameter mà không giải thích lại.
Không cần biết Spring, Reactor, hay bất kỳ framework nào. Toàn module dùng Java thuần (Java 17+).
Ước lượng thời gian
- Lộ trình tối thiểu (concept + mini-challenge): ~3–4 giờ đọc tập trung
- Lộ trình đầy đủ (đọc kỹ + tự làm self-check + mini-challenge): ~6–8 giờ
- Mỗi bài concept: 10–15 phút đọc + 5–10 phút self-check
Gợi ý học
- Đọc bài 01 và 02 trước khi vào bài 03 — lambda là tham số cho mọi stream op.
- Bài 03 là trung tâm module — nếu chưa hiểu lazy evaluation, các bài sau sẽ khó.
- Sau mỗi bài, làm hết self-check trước khi đọc tiếp — retrieval practice hiệu quả hơn đọc lại.
- Bài 10 (mini-challenge) là bài tổng hợp — làm thật, không đọc lời giải trước khi thử.
Bắt đầu tại đây: Lambda & Functional Interface
Bài này có giúp bạn hiểu bản chất không?
Hỏi đáp về bài này
Chưa có câu hỏi
Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).
Đặt câu hỏi đầu tiên