map是Stream API中用于一对一映射转换的中间操作,将每个元素按Function规则转为新类型元素,生成数量不变的新流,常用于字符串处理、字段提取、数值运算等场景。

map 是 Stream API 中最常用的转换操作之一,作用是将流中的每个元素按指定规则映射为另一个元素,生成一个**类型可能不同但数量不变**的新流。
map 的基本用法
它接收一个 Function
- 原始流不会被修改,Stream 操作都是中间操作,返回新流
- 元素个数保持不变:1 个输入 → 1 个输出
- 常见场景:字符串转大写、对象取某个字段、数值乘以系数、类型转换等
常见转换示例
假设有一个整数列表:
List- 转成字符串:
numbers.stream().map(String::valueOf).collect(Collectors.toList())→ ["1", "2", "3", "4"] - 平方运算:
numbers.stream().map(x -> x * x).collect(Collectors.toList())→ [1, 4, 9, 16] - 处理对象:若有个
Person列表,想提取所有姓名:people.stream().map(Person::getName).collect(Collectors.toList())
注意 map 和 flatMap 的区别
map 是“一对一”,而 flatMap 是“一对多 + 扁平化”。比如把字符串列表转成字符流:
-
list.stream().map(s -> s.split(""))得到的是Stream(每项是个数组) -
list.stream().flatMap(s -> Arrays.stream(s.split("")))才能得到Stream(所有字符铺平成单层流)
链式调用中合理使用 map
map 常和其他操作组合,比如先 filter 再 map,或 map 后再 sorted/collect:
List.filter(p -> p.getAge() > 18)
.map(Person::getFullName)
.sorted()
.collect(Collectors.toList());
- 顺序很重要:filter 应在 map 前,避免对不需要的数据做无谓转换
- map 内部应尽量轻量,避免复杂逻辑或 I/O 操作(影响性能和可读性)
- 如果转换逻辑较重,建议抽成独立方法,提升可读性和复用性
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











