这可能是一个微不足道的问题,但我还没有找到任何关于它的信息,所以这里有:

在实现

Comparable接口时,我们应该定义方法compareTo(),以便根据文档提供以下内容:

sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) for all x and y.

The relation is transitive: (x.compareTo(y)>0 && y.compareTo(z)>0) implies x.compareTo(z)>0.

x.compareTo(y)==0 implies that sgn(x.compareTo(z)) == sgn(y.compareTo(z)), for all z.

现在,令人困惑的部分是返回值,具体如下:

Returns a negative integer, zero, or a positive integer as this object

is less than, equal to, or greater than the specified object.

似乎大多数实现返回1,-1或0,即使它没有被提及作为要求以这种方式限制返回值.

因此,以下代码适用于对包含类Foo实例的列表(使用Collections.sort())进行排序:

public int compareTo(Foo other){

return this.value > other.value? 1 : this.value < other.value ? -1 : 0;

}

但是,这不是:

public int compareTo(Foo other){

return (int)(this.value - other.value);

}

其中value是long,并且值之间的差异不超过Integer.MAX_VALUE.

我在这里遗漏了什么,或者返回值是否恰好是1,-1或0,与文档相矛盾?

更新:感谢您的所有答案,但似乎人为因素归咎于此.我提到计算的差异小于Integer.MAX_VALUE,这应该意味着没有溢出,但我的计算是错误的,所以我确实得到了溢出,这导致了奇怪的结果.

java comparable_Java Comparable返回值,它必须是1,-1还是0?相关推荐

  1. java中的返回值到底有什么用?

    今天看到一个有意思的问题:java中的返回值到底有什么用? 看到了一个高赞回答如下: 你是公司的老总,然后你跟你秘书说,我想要两张的电影票.然后,你秘书去排队买票,最后把两张电影票给你,这两张电影票就 ...

  2. java for循环返回值_Java中的for循环——通过示例学习Java编程(9)

    作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=21 循环用于反复执行同一组语句,直到满足特定条件为止 ...

  3. java 函数参数 返回值_java中如何用函数返回值作为post提交的参数?

    1.我想实现的功能是在java程序中导入HttpURLConnection类,然后将函数的值作为post方法要提交的参数,最后显示在显示台上. 2.要用到的函数是自己写的可以显示实时计算机cpu.内存 ...

  4. java f.lenth返回值_long length

    描述 所述java.io.RandomAccessFile.getFD()方法返回与此流关联的不透明文件描述符对象. 声明 以下是java.io.RandomAccessFile.getFD()方法的 ...

  5. java函数void返回值是,Java中main()函数的返回值是什么( )。A、StringB、intC、c......

    下面的哪个是Java的关键字()A.stringB.abstractC.NULLD.Boolean Javaapplication中的主类需包含main方法,以下哪项是main方法的正确形参?A.St ...

  6. java 暂停等返回值在执行_java面试技巧(2)

    java面试试题及答案 以下是Java面试问题及答案: 1.简要介绍java程序的健壮性. 答:JAVA 程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格 ...

  7. java delete方法返回值_boolean delete()

    boolean delete() 描述 (Description) java.io.File.delete()方法删除由抽象路径名定义的文件或目录. 要删除目录,该目录必须为空. 声明 (Declar ...

  8. java调用c 返回值_推荐--Linux平台下Java调用C函数(补充关于String类型函数返回值)...

    平台介绍 系统:ubuntu10.04 jdk:Java(TM) SE Runtime Environment (build 1.6.0_20-b02) gcc:gcc version 4.4.3 ( ...

  9. Java中带返回值的线程池Future

    如何获取任务执行结果 Java通过ThreadPoolExecutor提供的三个submit()方法和一个FutureTask工具类来支持获得任务执行结果的需求. // 提交Runnable任务 Fu ...

最新文章

  1. 2019中国独角兽新增数锐减62%,仅有22家;美国新增78家,占全球大半
  2. 用ASP.NET AJAX 开发Web程序 — UpdatePanel篇
  3. 关于虚拟机vmware共享虚拟网卡上网
  4. 导入jar时出现invalid LOC header (bad signature)
  5. sqlserver学习日记之一
  6. 如何用spring boot写一个注册页面
  7. 跨平台开源通讯组件elastic communication
  8. css多个属性怎么写,具有多个属性的CSS过渡简写?
  9. jQuery Mobile中滑动块range的data-*选项
  10. 无法打开文件“libboost_system-vc110-mt-gd-x32-1_68.lib”
  11. FPGA中case语句4选1数据选择器
  12. 结对-人机对战象棋游戏-测试过程
  13. linux dns mx 记录,一起学DNS系列(十三)图文详说A、CNAME、MX和NS记录
  14. (1.6w字)浏览器灵魂之问,请问你能接得住几个?
  15. sci四区计算机期刊,计算机 | SCI期刊专刊信息4条
  16. 港大HKU邮箱(connect.hku.hk)添加至iphone 自带邮箱方法
  17. 用键盘控制鼠标移动的Python脚本
  18. 315,关于《C程序设计伴侣》一书致人民邮电出版社的公开信
  19. 苹果ipad有哪几款_2020年最新iPad选购指南
  20. 使用ros标定鱼眼相机

热门文章

  1. 数据库设计流程与E-R图
  2. 股票程序化交易软件好用吗?
  3. css 日历图标实现
  4. 用python买手机
  5. eworld 邮件服务器,网络服务器投标书.doc
  6. [paper]Adversarial Transformation Networks: Learning to Generate Adversarial Examples
  7. mapbox创建自定义marker图标绑定弹框展示信息
  8. mysql utf8mb4 配置_MySQL数据库UTF8mb4设置
  9. 如何使用美团云GPU云主机
  10. 故障分析 | MySQL 异地从库复制延迟案例一则