map是java stream api中用于“一对一”映射转换的中间操作,接收function接口参数,不改变原数据源和元素数量,需配合collect等终止操作执行。

map 是 Java Stream API 中最常用的操作之一,用于将流中的每个元素按指定规则“一对一”转换成另一个元素,生成一个新流。它不改变原数据源,也不影响流中元素个数,只做类型或值的映射变换。
map 的基本用法和语法
map 接收一个 Function
- 使用 Lambda 表达式:
stream.map(x -> x * 2) - 使用方法引用:
stream.map(String::toUpperCase) - 使用自定义函数对象(实现 Function 接口)
常见转换场景示例
假设有一个整数列表和字符串列表,看看 map 如何灵活工作:
- 数字运算:将
List<integer> nums = Arrays.asList(1, 2, 3);</integer>平方 →nums.stream().map(x -> x * x).collect(Collectors.toList())得到 [1, 4, 9] - 字符串处理:将
List<string> words = Arrays.asList("hello", "world");</string>转大写 →words.stream().map(String::toUpperCase).collect(Collectors.toList())得到 ["HELLO", "WORLD"] - 对象字段提取:若有
List<person> people</person>,想提取所有姓名 →people.stream().map(Person::getName).collect(Collectors.toList())
注意 map 和 flatMap 的区别
map 是“一对一”,输出流元素数与输入一致;而 flatMap 是“一对多”或“扁平化”,适合处理嵌套结构(如 List> → List
- 错误用法(想展开字符串列表但用了 map):
listOfLists.stream().map(list -> list)→ 得到 Stream- >
- 正确用法:
listOfLists.stream().flatMap(list -> list.stream())→ 得到 Stream
map 后通常要配合终止操作
map 是中间操作,必须接终止操作(如 collect、forEach、count、findFirst 等)才能真正执行。单独写 stream.map(...) 不会触发任何计算。
- 收集结果:
stream.map(...).collect(Collectors.toList()) - 遍历处理:
stream.map(...).forEach(System.out::println) - 链式组合:
stream.filter(...).map(...).sorted(...).limit(5).collect(...)
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











