我有一个自定义对象列表和一个枚举类。我必须根据枚举属性对列表进行排序。例如:
我的清单:
val list = listOf(Item(1,Severity.CRITICAL), Item(3, Severity.LOW), Item(2, Severity.SEVERE))
我的枚举类:
enum class Severity{
CRITICAL, SEVERE, MODERATE, LOW
}
我的排序列表应该是:
listOf(Item(1,Severity.CRITICAL), Item(2, Severity.SEVERE), Item(3, Severity.LOW))
按照枚举类中的顺序进行排序,如何实现?
5条答案
按热度按时间eoigrqb61#
使用
sortedBy
函数。它将非常容易地完成这项工作。tf7tbtn22#
只需为每个枚举附加一个值,这样就不必担心枚举类定义中的顺序。
然后您可以将列表排序为:
slhcrj9b3#
很简单。枚举:
列表:
KotlinENUM类有一个内部索引变量
ordinal
。它从0开始按照创建的ENUM的顺序设置。按如下方式排序:
c9x0cxw04#
您可以从枚举创建扩展函数,如下所示:
然后,只要:
这样做可以避免依赖于枚举顺序定义,并让“ordering”类设置自定义顺序。
yizd12fk5#
由于enum是一个可比较的对象,因此可以通过从enum的对象中提取enum值并使用compareBy对该对象进行排序
编辑:如果项的顺序是它的“自然”部分,则考虑实现Comparable接口,因此它将像