page contents

c# compareto 为什么会返回-1 、 1 、 0?

本文讲述了c# compareto 为什么会返回-1 、 1 、 0?具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2022-11-03gy7DcA636320b5f3f2b.png本文讲述了c# 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的那个条件符合你的需求就行了。

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等

attachments-2022-10-kwwbZ9WG6347756cbf77c.jpg

  • 发表于 2022-11-03 10:00
  • 阅读 ( 541 )
  • 分类:C/C++开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1478 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章