在 kotlin 中根据枚举对自定义对象列表进行排序

sag*_*uri 2 enums kotlin

我有一个自定义对象列表和一个 Enum 类。我必须根据枚举属性对列表进行排序。例如:

我的列表:

val list = listOf(Item(1,Severity.CRITICAL), Item(3, Severity.LOW), Item(2, Severity.SEVERE))
Run Code Online (Sandbox Code Playgroud)

我的枚举类:

enum class Severity{
 CRITICAL, SEVERE, MODERATE, LOW
}
Run Code Online (Sandbox Code Playgroud)

我的排序列表应该是:

listOf(Item(1,Severity.CRITICAL), Item(2, Severity.SEVERE), Item(3, Severity.LOW))
Run Code Online (Sandbox Code Playgroud)

排序是按照枚举类中的顺序完成的。我怎样才能做到这一点?

Ste*_*lus 9

只需为每个枚举附加一个值即可。这样您就不必担心枚举类定义中的顺序。

enum class Severity(val value: Int) { 
 SEVERE(1), 
 CRITICAL(0),
 MODERATE(2), 
 LOW(3)
}
Run Code Online (Sandbox Code Playgroud)

然后你可以这样对列表进行排序:

list.sortedBy { it.serverity.value }
Run Code Online (Sandbox Code Playgroud)


Abh*_*wal 5

使用sortedBy功能。它会很容易地完成这项工作。

val ans = list.sortedBy { it.severity }
Run Code Online (Sandbox Code Playgroud)

  • 如果枚举值的位置改变了怎么办? (3认同)