当前位置: 首页 > news >正文

错误:comparison method violates its general contract

java.lang.IllegalArgumentException: 比较方法违反了其通用约定!

Java中的Comparator接口指定了比较方法应遵循以下规则:

自反性:compare(a, a) 应返回 0。
对称性:如果 compare(a, b) 返回一个正值,那么 compare(b, a) 应返回一个负值,反之亦然。
传递性:如果 compare(a, b) 返回一个正值 且 compare(b, c) 返回一个正值,那么 compare(a, c) 应返回一个正值。
一致性:如果被比较的对象没有发生变化,比较的结果应保持不变。
如果自定义的比较方法违反了上述规则,将会出现"java.lang.IllegalArgumentException: Comparison method violates its general contract!"的异常。

项目背景 

// 比较两个时间的大小
Collections.sort(objects, new Comparator<FlowTaskOperatorRecordEntity>() {@Overridepublic int compare(FlowTaskOperatorRecordEntity o1, FlowTaskOperatorRecordEntity o2) {
//                int l = Math.toIntExact(cn.hutool.core.date.DateUtil.betweenMonth(o1.getHandleTime(), o2.getHandleTime(), false));return (int) (o1.getHandleTime().getTime() - o2.getHandleTime().getTime());}});

 猜测:getTIme()返回的为long类型,强转为int类型时,超出int的最大长度,强转之后的值为-1,说明前一个值比后一个值小,实际情况是前一个值比后一个值小,相减的值太大超出int的最大值,违反了对称性

相关文章:

  • 智慧应急:构建全方位、立体化的安全保障网络
  • vue使用gitshot生成gif
  • 【Langchain多Agent实践】一个有推销功能的旅游聊天机器人
  • 如何在Window系统部署BUG管理软件并结合内网穿透实现远程管理本地BUG
  • SpringMVC 学习(二)之第一个 SpringMVC 案例
  • 解释什么是内连接、左连接和右连接,并给出每种连接的SQL示例
  • day03_登录注销(前端接入登录,异常处理, 图片验证码,获取用户信息接口,退出功能)
  • 【pytorch矩阵应用】
  • 哈工大中文mistral介绍(Chinese-Mixtral-8x7B)
  • Redis实现滑动窗口限流
  • 微服务之qiankun主项目+子项目搭建
  • C++:封装
  • Pyglet综合应用|推箱子游戏之关卡图片载入内存
  • JMETER与它的组件们
  • 【C++】树形关联式容器set、multiset、map和multimap的介绍与使用
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • django开发-定时任务的使用
  • ECS应用管理最佳实践
  • es6(二):字符串的扩展
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • session共享问题解决方案
  • SOFAMosn配置模型
  • supervisor 永不挂掉的进程 安装以及使用
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 机器学习中为什么要做归一化normalization
  • 山寨一个 Promise
  • 算法-图和图算法
  • 我的业余项目总结
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 一个JAVA程序员成长之路分享
  • 再次简单明了总结flex布局,一看就懂...
  • 正则表达式小结
  • 如何用纯 CSS 创作一个货车 loader
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • 整理一些计算机基础知识!
  • #、%和$符号在OGNL表达式中经常出现
  • #HarmonyOS:Web组件的使用
  • (C语言)球球大作战
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (NSDate) 时间 (time )比较
  • (vue)页面文件上传获取:action地址
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (转)IOS中获取各种文件的目录路径的方法
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET MVC第三章、三种传值方式
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET连接数据库方式
  • @Not - Empty-Null-Blank
  • @RunWith注解作用