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

如何对包含乘客列表的List<Trips>按乘客姓名执行groupBy分组

实现逻辑

因为单个行程(Trip)会对应多名乘客,无法直接通过groupBy为单个行程返回多个分组键,所以需要先将「1个Trip对应N个乘客」的一对多关系,拆解为N个「乘客姓名 -> 对应Trip」的一对一映射,再按乘客姓名分组收集行程即可。

正确实现代码

val result: Map<String, List<Trip>> = trips
    // 展开为所有[乘客姓名-所属行程]的键值对
    .flatMap { trip ->
        trip.passengers.map { passenger ->
            passenger.name to trip
        }
    }
    // 按乘客姓名分组,收集对应行程
    .groupBy(
        keySelector = { it.first },
        valueTransform = { it.second }
    )

原代码错误说明

你原有写法的核心问题是groupBy的lambda要求每一个Trip元素只能返回一个分组键,无法同时匹配多个乘客作为键,因此无法实现一对多的分组映射。

补充说明

如果业务场景中存在重名乘客,需要区分不同乘客的行程时,可以直接用Passenger对象作为分组键,替换上述代码中的passenger.name即可,此时返回的Map类型为Map<Passenger, List<Trip>>。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:24:03