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

如何用Java 8极简代码将员工列表转为职级分组的ID映射表

解决方法:一行Java 8 Stream代码搞定分组转换

这需求用Java 8的Stream API简直是量身定做,代码极简还清晰,直接看核心实现:

// 前提:Employees类需提供getId()获取员工ID、getGrade()获取职级的getter方法
Map<String, List<String>> dataMap = lt.stream()
    .collect(Collectors.groupingBy(
        Employees::getGrade, // 按职级Grade作为Map的键
        Collectors.mapping(Employees::getId, Collectors.toList()) // 将员工对象转为ID后收集为列表
    ));

代码拆解说明:

  • lt.stream():把原ArrayList转换成Stream流,开启函数式操作模式。
  • 核心的collect方法搭配Collectors.groupingBy实现分组:
    • 第一个参数Employees::getGrade是分组规则,指定用员工的职级作为Map的key。这里要确保你的Employees类有对应的getGrade()方法返回职级字符串(比如"Grade1")。
    • 第二个参数是下游收集器:Collectors.mapping负责把每个Employees对象转换为对应的员工ID(通过Employees::getId方法引用),最后用Collectors.toList()把同一职级下的所有ID收集成List,作为Map的value。

小提示:

如果你的Employees类中,获取员工ID或职级的方法名不是getId()/getGrade(),直接替换成实际的方法名即可(比如如果职级属性的getter叫getEmployeeLevel(),就改成Employees::getEmployeeLevel)。

测试验证的话,生成的dataMap结构完全匹配你的需求:

  • "Grade1"对应列表["111", "666"]
  • "Grade2"对应列表["222", "333"]
  • "Grade3"对应列表["444", "555"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:23:10