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

如何优化双条件列表过滤算法:Kotlin充电站数据去重择优排序

代码优化方案

你的原始实现逻辑是正确的,我们可以利用Kotlin标准库的集合操作函数进一步简化代码,提升可读性,同时补全你原始代码中缺失的「保留完整Station对象」逻辑:

核心优化点

  • 去掉手动维护可变Map的遍历逻辑,用内置groupBy+minBy完成同类型下最优站点筛选
  • 无需提前判断列表非空,空输入会自动返回空结果
  • 直接保留完整Station对象,无需后续二次匹配原列表查找stationId
  • 排序逻辑可灵活调整

优化后完整代码

val result = stations
    // 按站点类型分组
    .groupBy { it.type }
    // 每组取status最优的站点:枚举ordinal越小优先级越高,和你定义的优先级顺序一致
    .mapValues { (_, sameTypeStations) ->
        sameTypeStations.minBy { it.status.ordinal }
    }
    // 提取所有分组的最优站点
    .values
    // 排序:AVAILABLE状态优先排在最前,其余状态默认按原有顺序排列
    .sortedByDescending { it.status == ChargingEntityStatus.AVAILABLE }

如果你需要对非AVAILABLE的站点也按status优先级排序,可以调整排序逻辑:

.sortedWith(
    compareByDescending<Station> { it.status == ChargingEntityStatus.AVAILABLE }
        .thenBy { it.status.ordinal }
)

注意事项

你当前定义的ChargingEntityStatus枚举顺序里OCCUPIED排在最后,优先级最低,和你注释标注的「UNAVAILABLE是最差选项」有出入,如果需要调整优先级直接修改枚举的定义顺序即可,代码无需改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:12:02