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

如何在Kotlin中基于枚举类实现列表的自定义排序

基于枚举类实现列表自定义排序

首先修正你给出的枚举类正确写法(以Java为例):

enum Type {
    TYPE1,
    TYPE2,
    TYPE3
}

方案1:利用枚举默认的ordinal()方法排序

枚举类中元素的声明顺序对应ordinal()方法返回的索引(TYPE1为0,TYPE2为1,TYPE3为2),刚好匹配你的排序需求。

假设你有一个包含该枚举类型的实体类:

class Item {
    private Type type;

    public Item(Type type) {
        this.type = type;
    }

    public Type getType() {
        return type;
    }
}

对列表排序的代码如下:

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

public class SortExample {
    public static void main(String[] args) {
        List<Item> items = Arrays.asList(
                new Item(Type.TYPE3),
                new Item(Type.TYPE1),
                new Item(Type.TYPE2)
        );

        // 基于枚举ordinal排序
        items.sort(Comparator.comparing(item -> item.getType().ordinal()));

        // 遍历验证结果
        items.forEach(item -> System.out.println(item.getType()));
    }
}

方案2:自定义枚举排序权重(更健壮)

如果后续枚举的声明顺序可能变化,但排序需求保持不变,建议给枚举类添加自定义排序字段,避免依赖ordinal()带来的潜在问题:

enum Type {
    TYPE1(0),
    TYPE2(1),
    TYPE3(2);

    private final int sortOrder;

    Type(int sortOrder) {
        this.sortOrder = sortOrder;
    }

    public int getSortOrder() {
        return sortOrder;
    }
}

排序时改用自定义的排序字段:

items.sort(Comparator.comparing(item -> item.getType().getSortOrder()));

Kotlin场景下的实现

如果使用Kotlin,写法更简洁:

利用枚举ordinal排序

enum class Type {
    TYPE1, TYPE2, TYPE3
}

data class Item(val type: Type)

fun main() {
    val items = listOf(Item(Type.TYPE3), Item(Type.TYPE1), Item(Type.TYPE2))
    val sortedItems = items.sortedBy { it.type.ordinal }
    sortedItems.forEach { println(it.type) }
}

自定义排序权重

enum class Type(val sortOrder: Int) {
    TYPE1(0), TYPE2(1), TYPE3(2)
}

data class Item(val type: Type)

fun main() {
    val items = listOf(Item(Type.TYPE3), Item(Type.TYPE1), Item(Type.TYPE2))
    val sortedItems = items.sortedBy { it.type.sortOrder }
    sortedItems.forEach { println(it.type) }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:52:44