compareTo返回值为-1 、 1 、 0代表的意义总结

2年前 (2022) 程序员胖胖胖虎阿
325 0 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的那个条件符合你的需求就行了。

版权声明:程序员胖胖胖虎阿 发表于 2022年9月12日 下午6:48。
转载请注明:compareTo返回值为-1 、 1 、 0代表的意义总结 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...