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

Java Stream中GroupBy如何返回自定义ID列表而非对象列表?

如何在Stream分组时直接返回ID列表而非实体对象列表?

当然可以在同一行的groupBy操作中完成,只需要使用Collectors.groupingBy的重载版本,搭配Collectors.mapping作为下游收集器,一步完成分组和对象转换:

Map<Boolean, List<Long>> result = userList.stream()
    .collect(Collectors.groupingBy(
        User::getStudent,
        Collectors.mapping(User::getId, Collectors.toList())
    ));

关键部分解析:

  • User::getStudent:从每个User对象中提取分组的布尔值键(是否为学生)
  • Collectors.mapping(User::getId, Collectors.toList()):作为下游收集器,先将User对象映射为对应的Long类型id,再把所有id收集为List<Long>,最终作为Map的值

这种写法省去了额外的Stream二次处理,直接在分组阶段完成对象到id的转换,代码更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:53:12