当前位置:嗨网首页>书籍在线阅读

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