针对jdk8中的List.sort()
Comparator(int a, int b)
if( a < b ){
// 返回负数或0值,不交换
// 返回正数值,交换ab
}
if( a > b){
// 返回负数值,交换ab
// 返回正数或0值,不交换
}
if( a == b ){
//返回非0值,会报异常Comparison method violates its general contract!
}
//推荐使用
a.compareTo(b)//升序
b.compareTo(a)//降序
//以下kotlin代码
kotlin.Comparator(a:double, b:double)
(a - b).toInt()
(b - a).toInt()
//以上两种写法很大可能报会报异常Comparison method violates its general contract!
//参考 https://www.cnblogs.com/firstdream/p/7204067.html
//异常示例
//以下数据会出现异常Comparison method violates its general contract!
//jdk版本1.8.0_181-b13
fun main(args:Array<String>){
val list = mutableListOf(
1.8,1.6,1.7,5.3,2.4,1.8,2.0,2.3,2.3,3.5,
2.7,4.0,4.0,1.7,3.0,3.2,4.0,4.0,4.0,3.4,
3.4,3.4,3.0,2.2,2.0,3.2,3.2,3.2,2.0,2.3,
2.3,2.2,2.7)
list.sortWith(kotlin.Comparator{a, b ->(b - a).toInt()})
}