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

Kotlin中如何自定义ItemCategory排序规则让OTHER排在末尾

解决方案

你可以通过自定义双层排序键实现需求,第一层优先将OTHER分类后置,第二层保持原有的分类名称字母序排序,修改后的代码如下:

items = itemList.sortedWith(
    compareBy(
        { if (it.category == ItemCategory.OTHER) 1 else 0 },
        { it.category.name }
    )
).groupBy { it.category }

逻辑说明

  • 第一层排序规则:所有非OTHER的分类排序权重为0,OTHER分类权重为1,权重更低的分类会排在前面,天然实现OTHER全局后置
  • 第二层排序规则:同一权重分组内的分类,仍然按照分类名称的字母序排列,和你原有逻辑保持一致

可选优化方案

如果后续可能调整分类排序顺序,建议直接在枚举类中定义排序优先级属性,维护更灵活:

  1. 调整枚举类定义,新增排序优先级字段
enum class ItemCategory(val sortOrder: Int) {
    ACCOUNT(0),
    CARD(1),
    INVESTMENTS(2),
    LOAN(3),
    PAYMENT(4),
    OTHER(Int.MAX_VALUE); // 直接设为最大值保证永远在最后
}
  1. 直接按优先级字段排序即可
items = itemList.sortedBy { it.category.sortOrder }.groupBy { it.category }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:39:03