考虑以下compareTo方法,实现Comparable< T>.接口.:

@Override

public int compareTo(MyObject o)

{

if (o.value.equals(value)

return 0;

return 1;

}

显然,程序员将compareTo实现为equals().显然是个错误.我希望这会导致Collections.sort()崩溃,但事实并非如此.相反,它只会给出一个任意结果:排序结果取决于初始排序.

public class MyObject implements Comparable

{

public static void main(String[] args)

{

List objects =

Arrays.asList(new MyObject[] {

new MyObject(1), new MyObject(2), new MyObject(3)

});

Collections.sort(objects);

System.out.println(objects);

List objects2 =

Arrays.asList(new MyObject[] {

new MyObject(3), new MyObject(1), new MyObject(2)

});

Collections.sort(objects2);

System.out.println(objects2);

}

public int value;

public MyObject(int value)

{

this.value = value;

}

@Override

public int compareTo(MyObject o)

{

if (value == o.value)

return 0;

return 1;

}

public String toString()

{

return "" + value;

}

}

结果:

[3, 2, 1]

[2, 1, 3]

我们能否为compareTo的这种奇怪实现提出一个用例,或者它总是无效的.如果是后者,它应该抛出异常,还是甚至不能编译?

java 为何 无效_java – 为什么compareTo无效导致Collections.sor...相关推荐

  1. java uuid静态方法_Java UUID compareTo()方法与示例

    java uuid静态方法 UUID类compareTo()方法 (UUID Class compareTo() method) compareTo() method is available in ...

  2. java方法声明无效_java 方法声明无效 需要返回类型

    如题了代码如下望高手指点/*客户机端程序*/importjava.net.*;importjava.io.*;importjava.awt.*;importjava.awt.event.*;class ...

  3. java long 比较_Java Long compareTo()方法

    Java Long compareTo()方法 java.lang.Long.compareTo() 方法比较两个Long 的对象的数值. 1 语法 public int compareTo(Long ...

  4. java sleep 失效_java:Thread.sleep()导致同步失效

    我测试的一个关于synchronize关键字的例子,如下当我为静态方法inc()加入syn关键字的时候,如果我把Thread.sleep()注释掉,同步效果发生作用,main方法输出了正确的结果100 ...

  5. java hashtable 并发_Java 并发容器 —— Hashtable 与 Collections.synchronizedMap(HashMap) 的区别...

    Hashtable 部分源码 以 Hashtable 的 put 方法为例: Hashtable 保证线程安全的方式在 方法前加上 synchronized 关键字(锁的是类的实例) Collecti ...

  6. ### Cause: java.sql.SQLSyntaxErrorException: ORA-00903: 表名无效

    第一次开发定时任务,很激动,开发完一运行,果然出现了好多问题,都是写结果一直报表名无效的问题-- 仔细检查了一遍又一遍,表名没错.字段没错.类型也没错,找来大佬帮忙看下,结果,没错呀--百度下吧! 百 ...

  7. java canonicalize_java.io.IOException:java.io.WinNTFileSystem.canonicalize0处的无效参数

    我正在使用Eclipse Mars和Tomcat v8.0.30,jre 1.8.0_73.昨天我没有任何问题,但今天我的Tomcat服务器无法启动.弹出一个对话框,它说:"开始在本地主机的 ...

  8. 如何在Java项目中查找未使用/无效的代码

    本文翻译自:How to find unused/dead code in java projects What tools do you use to find unused/dead code i ...

  9. java d 配置不生效_Tomcat启动失败问题 (指定的主资源集 [D:\java\apache-tomcat-9.0.35\webapps\AppManageSystem] 无效)...

    警告: 部署描述符[D:\java\apache-tomcat-9.0.35\conf\Catalina\localhost\AppManageSystem.xml]中值为[/AppManageSys ...

最新文章

  1. OpenCV+python:分水岭算法
  2. mysql ls命令,Linux 常用 ls命令详解
  3. halcon与QT联合:(5.2)瓶盖检测以及QT界面搭建
  4. linux函数怎么判断文件已更改,Linux下使用md5sum查看文件及程序是否被修改
  5. complementary prior
  6. 图论:dij算法优化:双端队列及详细证明
  7. matlab测量液体液位,基于MATLAB三容水箱液位控制系统.doc
  8. mysql(mariadb)的安装与使用,mysql相关命令,mysql数据类型
  9. LeetCode 56. 合并区间(合并区间+排序)
  10. 用台式机搭建服务器测试环境_2020年十大最佳台式机环境
  11. 机器学习 | 数学基础
  12. JAVA使用Gson解析json数据,实例
  13. 剪辑神器,分享一个可以批量修改大量视频MD5值的工具
  14. 【SQLPlanet】如何将一维表转化为二维表
  15. html内外边距区别,css水平边距和垂直边距 css中的内边距和外边距?
  16. 树莓派如何刷RetroPie,制作一个复古游戏机
  17. 思睿普信息IT技术服说明
  18. Flutter学习日记之使用路由进行页面切换
  19. C++实验3-税收计算
  20. webpack之css/js/html文件的压缩

热门文章

  1. java常用序列化与反序列化方法
  2. PureMVC--一款多平台MVC框架
  3. Javascript iframe交互并兼容各种浏览器的解决方案
  4. 编码的法则:c++程序员不可不知的101条经验
  5. [Spring实战系列](8)Spring注入方式之setter注入
  6. 初学者必知的Python中优雅的用法
  7. C++程序的构成和书写形式
  8. DPM 2010(二)---BMR裸机恢复域控制器
  9. 屏蔽×××S 2008报表导出格式
  10. 测量两台机器的的网络延迟和时间差