MR-LI_20200901-李伟江
问题
一直都没理解自然排序和比较器排序,今晚才想到关于自己的理解。
自然排序——原理
public int compareTo( Object o ) {
if( this.字段 < o.字段 ) {
return -10 ;
} else if( this.字段 == o.字段 ) {
return 0 ;
} else {
return 10 ;
}
}
应用:
如果一个类实现了Compare接口,那就可以用CompareTo方法去比较。一直都没分清原理和应用的关系。
对象.compareTo(另一个对象) > 0 ; //对象就大于另一个对象
对象.compareTo(另一个对象) == 0 ; //对象和另一个对象相等
对象.compareTo(另一个对象) < 0 ; //对象小于另一个对象
因为底层实现返回值要么正整数——大于0;要么负整数——小于0;要么==0,两个对象相等。
也就想通了只有实现了Compare接口的类,才能在内部这么比较。没想到的一点是,三个对象为什么会比较四次。五个比较七次。
比较器排序——原理
public int compare(Object first, Object second) {
if( first.getAge() < second.getAge() ) {
return -999 ;
} else if( first.getAge() == second.getAge() ) {
return 0 ;
} else {
return 999 ;
}
}
应用:
既然一个类没有实现Compare接口,也就没有CompareTo方法。类似于借助于第三方工具。创造一个比较器(老师当时说的应该是天平)。把两个对象放上去比较,然后得到一个结果。根据得到的结果是否大于0、小于0、或者等于0来判断这两个对象哪个大哪个小。
Comparator<对象类型> c = new 对象Comparator() ; //创建天平
Arrays.sort( 要排序的对象数组名称 , c ); //c是天平名称,通过两两比较进行排序
吐槽
虽然悟到了一点点,但是感觉还是没有悟到精髓。希望哪一天真的能够顿悟。
近期评论