public static void main(String[] args) {        
List<Long> ret = new ArrayList<>(); int n = 103000;
for(int i=0;i<n;i++){
ret.add(new Random().nextLong());
} Collections.sort( ret , new Comparator<Long>(){
@Override
public int compare(Long o1, Long o2) {
return (int) (o2-o1);
}
});
}

Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract!

at java.util.TimSort.mergeLo(TimSort.java:777)

at java.util.TimSort.mergeAt(TimSort.java:514)

at java.util.TimSort.mergeCollapse(TimSort.java:441)

at java.util.TimSort.sort(TimSort.java:245)

at java.util.Arrays.sort(Arrays.java:1512)

at java.util.ArrayList.sort(ArrayList.java:1454)

at java.util.Collections.sort(Collections.java:175)

一直以为没有什么问题,大于,小于,等于情况都考虑了。 原来原因是:integer overflow,看下面的例子就明白了。负数-正数=正数

o2:-273192312377492627

o1:3368764997970232313

o2-o1:1167472500

所以,这个compare里面定义的方法不符合compare的约束(传递性,对称性,反对称性)

PS:https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html#compare(T,%20T)

http://svn.python.org/projects/python/trunk/Objects/listsort.txt

最新文章

  1. IIS下配置PHP
  2. Linux Linux程序练习十八
  3. Myeclipse中打开接口实现类的快捷键
  4. 【转载】关于 Ubuntu 的小知识分享
  5. excel if判断时间段早晚班
  6. Spring MVC mapping[From Spring MVC Beginner&#39;s Guide]
  7. 关于VBox安装GhostXP出现蓝屏processr.sys 的解决办法
  8. 胸腺嘧啶“T”
  9. Android 不能勾选 Project Build Target
  10. 查看LINUX发行商版本与LINUX内核版本
  11. Java DOM4J读取XML
  12. SpringMVC注释启用
  13. Linux命令基础2-ls命令
  14. [LeetCode&amp;Python] Problem 70. Climbing Stairs
  15. pb 11 数据窗口空白,预览pb崩溃解决方案
  16. laravel 容器注入的坑
  17. GAN-生成对抗网络原理
  18. Python基础-内置函数、模块、函数、json
  19. MVC Json方法里的一个坑
  20. openfire维持在线状态,监听消息

热门文章

  1. Mongodb 和 Solr 实时同步
  2. thinkphp nginx 上配置 并解决get获取到数据现象
  3. 长尾分布,重尾分布(Heavy-tailed Distribution)
  4. 支持IE低版本的上传 大文件切割上传 断点续传 秒传
  5. String painter (hdu 2476 DP好题)
  6. 蓝桥杯 第三届C/C++预赛真题(7) 放棋子(水题)
  7. AWS系列-修改RDS时间(time_zone)
  8. org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x160fd6f04410017 after 0ms
  9. mvn命令上传jar
  10. wordpress添加关键字