You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java Stream将List<Student>转换为List<Map>

实现List到List的转换方案

当然可以实现!这在Java开发里是非常常见的转换需求,我给你分享两种实用的方案,你可以根据自己的Java版本和项目场景来选择:

1. 传统循环方式(兼容所有Java版本)

这种方式逻辑直观,不管你用的是Java 7还是更早的版本都能正常运行:

// 假设你已经有了Student列表
List<Student> studentList = new ArrayList<>();
// 初始化studentList...

List<Map<String, String>> studentMapList = new ArrayList<>();

for (Student student : studentList) {
    Map<String, String> studentMap = new HashMap<>();
    // 调用Student类已有的getName()方法获取姓名
    studentMap.put("name", student.getName());
    // 注意:你的Student类中age没有提供getter方法,如果是同包或子类可以直接访问成员变量
    // 实际项目中建议补充getAge()方法,更符合封装原则
    studentMap.put("age", student.age);
    studentMapList.add(studentMap);
}

这种方法的优势是兼容性拉满,新手也能快速理解代码逻辑。

2. Java 8+ Stream API方式(更简洁优雅)

如果你使用的是Java 8及以上版本,用Stream API可以写出更简洁的代码:

List<Student> studentList = ...; // 你的学生列表

List<Map<String, String>> studentMapList = studentList.stream()
    .map(student -> {
        Map<String, String> map = new HashMap<>();
        map.put("name", student.getName());
        map.put("age", student.age); // 同样注意age的访问权限问题
        return map;
    })
    .collect(Collectors.toList());

要是你用的是Java 9及以上,还可以用Map.of()进一步简化代码(生成的是不可变Map):

List<Map<String, String>> studentMapList = studentList.stream()
    .map(student -> Map.of(
        "name", student.getName(),
        "age", student.age
    ))
    .collect(Collectors.toList());

小提示

你的Student类中age字段没有提供getter方法,在实际项目中建议补充public String getAge() { return age; },这样既符合面向对象的封装原则,也能避免访问权限带来的问题(比如跨包访问时无法直接读取成员变量)。

内容的提问来源于stack exchange,提问作者John Lennon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:42:17