07 — Lambda与Stream索引
定位: Java 8 引入函数式编程 — 从"怎么做"到"做什么",代码从命令式到声明式的转变 面试高频度: ⭐⭐⭐⭐
一、知识全景图
┌─────────────────────────────────────────────────────────────┐
│ Lambda / Stream / 方法引用 演进 │
│ │
│ 匿名内部类 → Lambda → 方法引用 │
│ new Runnable() () -> {} System.out::println │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Stream 流水线模型 │ │
│ │ │ │
│ │ 数据源 ─→ 中间操作(惰性) ─→ 终端操作(触发) │ │
│ │ (集合) filter/map/flatMap collect/forEach │ │
│ │ sorted/distinct reduce/count │ │
│ │ │ │
│ │ 惰性求值 → 链式方法构建操作流水线 │ │
│ │ 终端操作触发 → 一次性处理所有数据 │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ ┌─────────── Collectors ─────────────────────┐ │
│ │ toList / toSet / toMap / groupingBy │ │
│ │ partitioningBy / joining / summarizingInt │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘二、子专题导航
| # | 主题 | 面试频率 | 核心内容 |
|---|---|---|---|
| **Lambda与函数式接口** | Lambda与函数式接口 | ⭐⭐⭐⭐ | @FunctionalInterface、四大核心函数式接口、变量捕获 |
| **Stream流水线** | Stream流水线 | ⭐⭐⭐⭐ | 惰性求值、中间操作/终端操作、并行流 |
| **Collectors收集器** | Collectors收集器 | ⭐⭐⭐⭐ | toMap 详解、groupingBy 分组、分区、下游收集器 |
| **方法引用** | 方法引用 | ⭐⭐⭐ | 四种引用方式、构造器引用、数组引用 |
📚 相关文件
- **集合索引** — Stream 的数据源
- **Java文库设计文档** — 返回总纲