Kotlin中如何对ArrayList的Bike对象按type和color双条件分组统计数量
实现方案
你可以将groupingBy的分组键设置为type和color的组合即可,两种常用实现方式如下:
方案1:用Pair作为分组键(推荐,后续业务处理更灵活)
val combinedCount = list.groupingBy { it.type to it.color }.eachCount()
返回结果类型为Map<Pair<String?, String?>, Int>,取值时直接用双属性组合匹配即可,例如combinedCount["MOUNTAIN" to "GREEN"]就能拿到对应分组的数量。
方案2:直接生成示例格式的字符串键
如果需要和你给出的示例输出格式完全对齐,可以直接拼接字符串作为分组键:
val combinedCount = list.groupingBy { "${it.type} and ${it.color}" }.eachCount()
统计结果的键就会是MOUNTAIN and GREEN这类字符串,完全匹配你的示例要求。
可选优化:过滤空值
如果你的业务逻辑不允许type或color为空,可以在分组前先过滤掉空值条目,避免生成无效分组:
val combinedCount = list .filter { it.type != null && it.color != null } .groupingBy { "${it.type} and ${it.color}" } .eachCount()
内容的提问来源于stack exchange,提问作者Ticherhaz FreePalestine
相关产品推荐
相关产品推荐

