本文介绍如何用 java 8+ 的 stream api 替代传统 for 循环,通过 `map()` 配合 `collect(collectors.tolist())` 一行代码完成对象集合到属性集合的转换,提升代码简洁性与可读性。
在 Java 开发中,遍历集合并提取某字段(如 object.name)生成新列表是高频操作。传统写法需显式创建 ArrayList、手动循环、逐个添加——冗长且易出错。Stream API 提供了函数式、声明式的替代方案,核心即 map() 操作:它将流中的每个元素按指定规则“映射”为新值,再结合 collect() 汇总结果。
以你的示例为例,原始代码:
var allObjectNames = new ArrayList(); for (Object object : allObjects) { allObjectNames.add(object.name); }
可精简为一行:
var allObjectNames = allObjects.stream()
.map(o -> o.name)
.collect(Collectors.toList());✅ 关键说明:
⚠️ 注意事项:
完整可运行示例(修正原代码中的小错误,如类名拼写、变量命名一致性):
import java.util.*; import java.util.stream.Collectors; public class FunctionMapping { public static void main(String[] args) { var output1 = new Output("start"); var output2 = new Output("success"); var output3 = new Output("failure"); List
总结:stream().map().collect() 不仅大幅减少样板代码,还天然支持链式扩展(如追加 .filter() 去除空值、.distinct() 去重),是现代 Java 集合处理的推荐范式。掌握它,让代码更短、更清晰、更具表达力。