JDK1.7 不兼容compare方法
程序员文章站
2022-05-20 18:06:51
...
java.lang.IllegalArgumentException: Comparison method violates its general contract!
网上查到一个解释:
Description: The sorting algorithm used by java.util.Arrays.sort and (indirectly) by java.util.Collections.sort has been replaced. The new sort implementation may throw an IllegalArgumentException if it detects a Comparable that violates the Comparable contract. The previous implementation silently ignored such a situation. If the previous behavior is desired, you can use the new system property, java.util.Arrays.useLegacyMergeSort, to restore previous mergesort behavior.
也就是说jdk 7的sort函数的实现变了,造成了这个问题,具体原因未知。
改一下系统设置,还是选择使用老版本的排序方法,在代码前面加上这么一句话:System.setProperty("java.util.Arrays.useLegacyMergeSort", "true");
网上查到一个解释:
Description: The sorting algorithm used by java.util.Arrays.sort and (indirectly) by java.util.Collections.sort has been replaced. The new sort implementation may throw an IllegalArgumentException if it detects a Comparable that violates the Comparable contract. The previous implementation silently ignored such a situation. If the previous behavior is desired, you can use the new system property, java.util.Arrays.useLegacyMergeSort, to restore previous mergesort behavior.
也就是说jdk 7的sort函数的实现变了,造成了这个问题,具体原因未知。
改一下系统设置,还是选择使用老版本的排序方法,在代码前面加上这么一句话:System.setProperty("java.util.Arrays.useLegacyMergeSort", "true");
// return a_actorDetails1.getId() - a_actorDetails2.getId() 改为一下 // double 直接return不支持。 if (a_actorDetails1.getId() - a_actorDetails2.getId() > 0) { comparisonResult = 1; } else if (a_actorDetails1.getId() - a_actorDetails2.getId() == 0) { comparisonResult = 0; } else { comparisonResult = -1; } break;
推荐阅读
-
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
-
IE11浏览器网页不兼容的四种解决方法
-
win8系统安装冒险岛不兼容且提示“此程序存在已知兼容性问题”的解决方法
-
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
-
升级 PHP7.1 后 openssl 解密 mcrypt AES 数据不兼容问题的处理方法
-
显卡和主板不兼容的原因小结与解决方法
-
在python3中pyqt5和mayavi不兼容问题的解决方法
-
扩展ie中不兼容的startsWith,endsWith方法
-
年月日时间格式转时间戳 ,解决ios系统不兼容 JS 中 = new Date(yyyy-mm-dd)方法
-
iOS14适配【 采用hook全局性地解决UITableViewCell兼容问题】往cell添加子视图的方式不规范,导致contentView 置于自定义控件的上层,引发界面无响应(注意处理相关方法)