本文共 594 字,大约阅读时间需要 1 分钟。
Compare
样例代码:
class SortDemo extends Ordering[((Any, String), Int)]{ override def compare(x: ((Any, String), Int), y: ((Any, String), Int)): Int = { y._2 - x._2 }}
原理:
- compare返回值是Int类型,三种情况正数、0、负数。
- compare如果比较的是Int、Float、Double类型的话,直接以值进行比较。
- compare如果比较的是String、char类型的数据,它会从两个数据的第一个字符开始比较,如果不同,就返回两个字符的ASCII差值;如果字符都相同,那么再比较两个字符串的长度,最后返回两个字符串长度的差值。
- compare比较如果返回的是正数,那么两个数要进行交换,如果结果为负数和0,两个数都不会进行交换。
结论:
对于compare(Object o1,Object o2)而言,
- 如果要按照对象的某一个属性进行升序排序,那么直接返回o1.属性值-o2.属性值(因为如果第一个数比第二个数大,会返回正值,两个对象要进行交换)。
- 如果要按照对象的某一个属性进行降序排序,那么直接返回o2.属性值-o1.属性值(因为如果第二个数比第一个数大,会返回正值,两个对象要进行交换)。
转载地址:http://luve.baihongyu.com/