03-枚举类扩展
6.1.2 枚举类扩展
除了基本的用法之外,Kotlin的枚举常量还实现了Comparable接口,该接口能强行对实现它的每个类的对象进行整体排序,整体排序又称为该类的自然排序,其自然顺序是它们在枚举类中定义的顺序。Comparable接口格式如下。
interface Comparable<in T>
Comparable接口提供了很多有用的函数,可以方便开发者进行排序操作。常见的有以下几个。
- compareTo(other: T): Int,比较当前对象与指定对象的顺序,如果当前对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
- equals(other: Any?): Boolean,比较当前对象与指定对象是否“相等”,返回一个Boolean类型的结果。
- hashCode(): Int,返回对象的Hash值。
- T.coerceAtLeast(minimumValue: T): T,确保当前对象的值不小于指定的最小值。
- T.coerceAtMost(maximumValue: T): T,确保当前对象的值不大于指定的最大值。
- T.coerceIn(minimumValue: T?, maximumValue: T?): T,确保当前对象的值位于指定范围minimumValue和maximumValue之间。
- T.coerceIn(range: ClosedRange
): T,确保当前对象的值在某个指定范围之内。 - T.rangeTo(that: T): ClosedRange
,创建一个指定范围并且实现Comparable的值。
对于Comparable,来看一个列表排序的例子。
fun main(args: Array<String>) {
val ts1 = ArrayList<Int>()
ts1.add(3)
ts1.add(8)
ts1.add(6)
ts1.add(2)
Collections.sort(ts1)
val itr = ts1.iterator()
while (itr.hasNext()) {
val element = itr.next()
println(element)
}
}
运行上面的代码,输出结果如下。
2
3
6
8