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

Kotlin中使用GROUP BY分组时如何限制每组返回的条目数量

你可以在groupBy分组后对每个分组的列表做截取处理,Kotlin标准库提供了非常简洁的实现方式:

方案1:保留分组Map结构,每组取前20条

val groupedPlayers = players.groupBy { it.skill }
    .mapValues { (_, groupList) -> groupList.take(20) }

执行后groupedPlayers是键为skill属性值、值为对应20个玩家的Map结构。

方案2:需要随机抽取每组20条而非取前20条

如果不希望固定取每个分组的前20条,要随机抽样的话可以先打乱分组列表再截取:

val groupedPlayers = players.groupBy { it.skill }
    .mapValues { (_, groupList) -> groupList.shuffled().take(20) }

方案3:最终输出80条扁平列表而非分组结构

如果不需要保留分组的Map结构,直接要合并后的80条总数据,可以用flatMap处理:

val resultList = players.groupBy { it.skill }
    .flatMap { (_, groupList) -> groupList.take(20) }

如果你的数据量极大,想要避免全量分组的性能开销,也可以用groupingBy配合折叠操作实现流式裁剪,对于400条量级的数据集来说上面的写法性能完全足够。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:48:03