compareTo返回值为-1 、 1 、 0代表的意义总结
此文也是总结,参考了各位博主之后的理解:
Comparable接口和Compatator接口都可以实现排序,那就是: 重写 compareTo(Object obj) 方法的规则(两个对象通过该方法的返回值来比较大小):
如果当前对象this大于形参对象obj,则返回正整数; 如果当前对象this小于形参对象obj,则返回负整数; 如果当前对象this等于参数对象obj,则返回零。
int compareTo(T o) 比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
升序(默认,即官方定义,毕竟代码实现就是基于这个写的):
< -1 = 0 //或者 1效果是一样的;-1相同元素会发生位置调整 1
降序:
< 1 = 0 //或者 1效果是一样的;-1相同元素会发生顺序调整 -1
倒序:
//直接 return -1;
不改变顺序:
//直接 return 0或者1;
很多人总结了权重的问题: 1是前者权重大,-1是后者。JAVA则按照权重由小到大排序。 这样说法也好理解: 如果当前值<传递过来的值,返回-1,则后者权重大,升序排列 如果想要降序,则需要当前值<传递过来的值返回1,则前者权重大 这样写代码的时候,你只要考虑权重就能得到满足需求
但还有更加精辟的解释:如果返回负数,第一个参数放前面; 按照官方默认来看: 当前值<传递过来的值,返回-1,则返回小的那个数放在前边,这样就是升序排列 同样当当前值>传递过来的值是返回-1的话,大的那个数就在前边,这样就是降序排列了 这样我们不管降序升序只要保证返回是-1的那个条件符合你的需求就行了。
