Comparison method violates its general contract!null

2023-05-16

@Override
            public int compare({
            }

这个错就是这个方法报出来的

原因是compare方法没有对空值进行判断,所以传进去的不能是空

所以应该先判断是否为空,在进行判断大小

例如我原来的代码是:

	Collections.sort(list, new Comparator<DealerComplaintFollow>() {
            @Override
            public int compare(DealerComplaintFollow o1, DealerComplaintFollow o2) {
                if (FOUR_HOUR_FOLLOW.equals(filed)) {
                    return o1.getFourHourFollowRate() > o2.getFourHourFollowRate() ? -1 : 1;
                } else if (CLOSED.equals(filed)) {
                    return o1.getComplaintCloseRate() > o2.getComplaintCloseRate() ? -1 : 1;
                } else if (AVERAGE_FOLLOW_DURATION.equals(filed)) {
                    return o1.getAverageFollowDuration() > o2.getAverageFollowDuration() ? 1 : -1;
                } else if (AVERAGE_CLOSED_DURATION.equals(filed)) {
                    return o1.getAverageCloseDuration() > o2.getAverageCloseDuration() ? 1 : -1;
                }
                return 0;
            }
        });

修改之后的代码就应该是:

	Collections.sort(list, new Comparator<DealerComplaintFollow>() {
            @Override
            public int compare(DealerComplaintFollow o1, DealerComplaintFollow o2) {
                if (FOUR_HOUR_FOLLOW.equals(filed)) {
                    if (Objects.isNull(o1.getFourHourFollowRate()) && Objects.isNull(o2.getFourHourFollowRate())){
                        return 0;
                    }else if (Objects.isNull(o1.getFourHourFollowRate())){
                        return 1;
                    }else if (Objects.isNull(o2.getFourHourFollowRate())){
                        return -1;
                    }
                    return o1.getFourHourFollowRate() > o2.getFourHourFollowRate() ? -1 : 1;
                } else if (CLOSED.equals(filed)) {
                    if (Objects.isNull(o1.getComplaintCloseRate()) && Objects.isNull(o2.getComplaintCloseRate())){
                        return 0;
                    }else if (Objects.isNull(o1.getComplaintCloseRate())){
                        return 1;
                    }else if (Objects.isNull(o2.getComplaintCloseRate())){
                        return -1;
                    }
                    return o1.getComplaintCloseRate() > o2.getComplaintCloseRate() ? -1 : 1;
                } else if (AVERAGE_FOLLOW_DURATION.equals(filed)) {
                    if (Objects.isNull(o1.getAverageFollowDuration()) && Objects.isNull(o2.getAverageFollowDuration())){
                        return 0;
                    }else if (Objects.isNull(o1.getAverageFollowDuration())){
                        return -1;
                    }else if (Objects.isNull(o2.getAverageFollowDuration())){
                        return 1;
                    }
                    return o1.getAverageFollowDuration() > o2.getAverageFollowDuration() ? 1 : -1;
                } else if (AVERAGE_CLOSED_DURATION.equals(filed)) {
                    if (Objects.isNull(o1.getAverageCloseDuration()) && Objects.isNull(o2.getAverageCloseDuration())){
                        return 0;
                    }else if (Objects.isNull(o1.getAverageCloseDuration())){
                        return -1;
                    }else if (Objects.isNull(o2.getAverageCloseDuration())){
                        return 1;
                    }
                    return o1.getAverageCloseDuration() > o2.getAverageCloseDuration() ? 1 : -1;
                }
                return 0;
            }
        });

return啥结果 根据你想进行排序的顺序决定

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Comparison method violates its general contract!null 的相关文章

  • Java中的双重比较技巧

    C 允许您将两个整数比较合并为一个以进行范围检查 例如 unsigned X lt unsigned Upper 当 0 lt X lt Upper Java 语言没有无符号类型 您是否找到了一种方法来获得相同的效果 使用单个比较并且没有太
  • 添加 MIN_VALUE 如何将整数与无符号整数进行比较?

    在Java中int类型是有符号的 但是它有a method https docs oracle com javase 8 docs api java lang Integer html compareUnsigned int int 比较两
  • 这种比较/排名算法如何命名?

    我见过一些网站 它们从列表中随机显示两个项目 用户选择他们喜欢的一项 然后根据用户偏好的结果 为整个数据集生成排名 有谁知道这个排名算法叫什么以及它是如何工作的 谢谢 我相信你指的是ELO评级系统 http en wikipedia org
  • glmmTMB 上的计划对比

    如果这是一个重复的问题 我们深表歉意 许多人发帖寻找一种方法来对 glmmTMB 中的条件模型 固定因子 进行事后分析 我想在某些组之间进行有计划的对比 而不是测试每个成对比较 例如 Tukey 下面的代码在 lmm 的 nlme lme
  • NSSortDescriptor:同时对多个键进行自定义比较

    我有一个自定义对象 其中包含基于时间段的信息 例如属性 endCalYear endMonth 和 periodLength 它们指示每个时间段的结束及其长度 我想创建一个NSSortDescriptor基于或其他排序方法 结合了这三个属性
  • JavaScript 对象有全序吗?

    标题基本概括了所有内容 JavaScript 在使用时是否保证对象的总顺序 lt gt lt and gt 运营商 我编写了一些代码只是为了检查某些对象的总排序 结果与全序一致 但这并不能证明任何事情 function thereIsTot
  • strcasecmp():非标准函数?

    前几天我在 CodeReview 上创建了一篇文章 一位回答我问题的人建议我不要使用 strcasecmp 因为 该函数是非标准的 这使得我的代码不可移植 这就是我的使用方式 int playGame char scanned 3 prin
  • javascript / jquery - 选择两个数字中较大的一个

    我正在尝试使用 javascript 选择两个数字中较大的一个 我知道我可以编写一个 if 语句 但我想知道是否有某种数学运算或其他东西可以提高效率 以下是我使用 if 语句执行此操作的方法 if a gt b c a else c b 我
  • 如何处理“有符号/无符号不匹配”警告 (C4018)?

    我使用大量编写的计算代码c questions tagged c 2b 2b考虑到高性能和低内存开销 它使用STL容器 主要是std vector 很多 并且几乎在每个函数中迭代该容器 迭代代码如下所示 for int i 0 i lt t
  • 测试 Bash 中字符串是否包含非空白字符

    我的脚本正在读取并显示 id3 标签 我试图让它回显未知字段是否为空 但我尝试的每个 if 语句都不起作用 id3 标签是固定大小的 因此它们永远不会为空 但如果没有值 它们会用空格填充 即标题标签的长度为 30 个字符 到目前为止我已经尝
  • 如何比较两个数组的所有元素?

    我有两个大约 1000 行和 1000 列的大数组 我需要比较这些数组的每个元素 如果相应的元素相等 则将 1 存储在另一个数组中 我可以用 for 循环来做到这一点 但这需要很长时间 我怎样才能更快地做到这一点 给出的答案都是正确的 我只
  • 比较两个数组并找出差异

    我需要比较两个数组并获得差异 背景 第一个数组将列出文件夹中的文件 第二个数组将读取文件的内容并存储在数组中 第一个数组的输出将是 a b c d e 第二个数组的输出将是 a b c e 我如何比较这两个有差异的数组 我想要的最终输出是
  • ImageMagick 和 GraphicsMagick 有什么区别?

    我发现自己正在评估这两个库 除了 GraphicsMagick 的比较之外 我发现 ImageMagick 仍然有更新 而且看起来两者几乎相同 我只是想用 C 进行基本的图像操作 即图像加载 过滤器 显示 在这些库之间进行选择时我应该注意什
  • Buildr 与 Gradle,优缺点? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 比较 Oracle 中的字符串

    我需要在表中查询给定字符串的值 该表区分大小写 但我想在比较中执行 ToLower 假设我有一个包含以下数据的类表 class teacher Mat101 Smith MAT101 Jones mat101 Abram ENG102 Sm
  • JavaScript 中仅比较日期部分而不比较时间

    下面的代码有什么问题 也许只比较日期而不是时间会更简单 我也不知道如何做到这一点 我进行了搜索 但找不到我的确切问题 顺便说一句 当我在警报中显示两个日期时 它们显示为完全相同 My code window addEvent domread
  • 在 Perl 中比较字符串时如何忽略重音符号?

    我有这个测验应用程序 我将人们输入的内容与正确的答案相匹配 现在 我所做的基本上是 if input answer i print you won 这很好 就好像答案是 鱼 一样 用户可以输入 一条鱼 并被视为一个好的答案 我面临的问题是
  • 为什么“for (i = 100; i <= 0; --i)”会永远循环?

    unsigned int i for i 100 i lt 0 i printf d n i 应该i gt 0如果你希望它从 100 循环到 0 则在循环的第二个条件中 正如其他人指出的那样 您需要更改对的定义i到一个有符号整数 只是int
  • 关于 .Equals() 与 == 运算符以及基元与对象比较的混淆

    考虑这段代码 int a 0 short b 0 int c 0 object a1 a object b1 b object c1 c Console WriteLine 1 comparing primitives int vs sho
  • 大于/小于的 switch 语句

    所以我想使用这样的 switch 语句 switch scrollLeft case lt 1000 do stuff break case gt 1000 lt 2000 do stuff break 现在我知道这些陈述中的任何一个 lt

随机推荐

  • 本地(window)使用alist和RaiDav网盘挂载

    一 背景 百度网盘的限速可能会让你转战阿里云盘 xff0c 但是阿里云盘的缺点在于不能分享 xff0c 网络上的资源都是通过各类网盘来分享的 xff0c 这样就会让你可能同时拥有不同网盘的账号 那么我们有没有一款工具 xff0c 可以将这些
  • 【笔记】ssd mobilenet 网络

    之前实习用过太多次mobilenet ssd xff0c 但是一直只是用 xff0c 没有去了解它的原理 今日参考了一位大神的博客 xff0c 写得很详细 xff0c 也很容易懂 xff0c 这里做一个自己的整理 xff0c 供自己理解 x
  • 添加与删除 Ubuntu 环境变量

    1 作者的系统是Ubuntu 13 10 xff0c 在其他linux发行版中环境变量的设置方式类似但会有不同 xff1b 2 这里以环境变量PATH为例 xff0c 环境变量还可以有很多 xff0c 也可以自己定义名称 什么是环境变量 环
  • [Kali Linux 安全渗透教程新手版]

    1 1什么是安全渗透 渗透测试时通过模拟黑客的攻击方法 来评估计算机网络系统安全的一种评估方法 通常的评估方式对评估结果更具全面性 而渗透测试更注重安全露的严重性 1 6Kali更新与升级 Ctrl 43 F1 快捷键提示 Ctrl 43
  • CTreeList 拖拽功能实现

    转载地址 http tech ddvip com 2008 11 122662837992492 html Visual C 43 43 中提供的MFC类CtreeCtrl xff08 树型控件 xff09 用来显示具有一定层次结构的数据项
  • 使用hex编码绕过主机卫士IIS版本继续注入

    本文作者 xff1a 非主流 测试文件的源码如下 xff1a 我们先直接加上单引号试试 xff1a http 192 168 0 20 conn asp id 61 1 27 很好 xff0c 没有报错 那我们继续 xff0c and 1
  • Win10启动VMware虚拟机结果宿主机蓝屏重启

    VM启动虚拟机结果宿主机蓝屏重启 xff0c 按照以下步骤处理即可 xff0c 我是通过升级VM版本最终解决的 xff0c 自己看自己的情况 xff0c 都试一下就行 1 操作控制面板 右键windows图标 xff0c 点击搜索 xff0
  • Debian9.12镜像下载及网络、软件源配置

    Debian9 12安装 配置 文章目录 获取镜像虚拟机安装配置网络配置合适的仓库源更新软件包 安装所需工具 搭建环境Debian镜像下载链接其他资源 获取镜像 Debian9 12 Debian 9 12 官方原版镜像下载 任我乐 ren
  • dpkg: 处理软件包 xxx (--configure)时出错 解决办法

    第一步 xff1a 备份 sudo mv var lib dpkg info var lib dpkg info bk 1 第二步 xff1a 新建 sudo mkdir var lib dpkg info 1 第三步 xff1a 更新 s
  • 解决SQL server中提示对象名无效

    用SQL server的时间不长 xff0c 但现在遇到两种情况 xff0c 在这里分别说一下解决办法 1 刚打开SQL server Manager Studio xff0c 想看看表里的信息 xff0c 就写一个查询语句 xff0c 结
  • 解决maven无法下载依赖的问题

    大概从2020年1月底的时候第一次遇到这个问题 xff0c 当时在假期期间自己写小Demo玩 xff0c 依赖下载不了就去找了个包放进去 xff0c 并没有太在意 直至几天后因为疫情在家远程办公的时候新项目的依赖一直下载不了 xff0c 困
  • 解决idea已经添加外部jar包但仍然找不到包的错误

    对于开发人员来说 xff0c 开发项目时除了maven下载的依赖之外 xff0c 一般都需要引入一些公司内部封装的jar包依赖 xff0c 但是有时候会出现明明已经build path了 xff0c 但是build项目的时候还是报错说某某包
  • vmware安装虚拟机提示此主机不支持64位系统,此系统无法运行

    原因 安装虚拟机提示这个是因为和电脑上的Hyper V服务冲突了 xff0c 解决办法是关闭Hyper V服务就可以了 步骤 打开控制面板找到程序和功能 点击启用或关闭Windows功能 找到Hyper V xff0c 此时状态是勾选的 取
  • springboot项目启动指定项目外部yml配置文件

    spring boot的经典项目配置是application yml xff0c 在项目打包部署运行的时候 xff0c 这个文件也会一同打进包里 xff0c 随之启动 这就带来了一个问题 xff1a 如果部署的服务器发生了变动 xff0c
  • MyEclipse安装SVN插件及插件下载地址

    在网上找了很多安装教程 xff0c 但是找到的subclipse的下载地址都访问不到 xff0c 不知道是不是需要翻墙 xff0c 我自己找了个测试过有效的 xff1a 网盘下载地址 xff1a https pan baidu com s
  • Linux 安装并配置 OpenLDAP 新编(3)YUM安装

    Linux 安装并配置 OpenLDAP 新编 xff08 3 xff09 YUM安装 我实操OpenLDAP的过程 xff0c 是先根据官网资料编译安装 xff0c 大约花费了近2周时间 xff0c 也有点陷入牛角尖了 xff0c 一时不
  • org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException

    问题描述 xff1a 1 在application yml文件里的注释乱码 2 idea编辑器提示这个文件被错误的编码UTF 8加载 xff0c 并提示重新使用GBK加载等等 3 项目启动报错 xff1a java nio charset
  • 解决java.lang.IllegalStateException: Cannot call sendError() after the response has been committe

    错误截图 xff1a 错误代码 xff1a 错误原因 xff1a 输出流关闭之后 xff0c socket也已经关闭 xff0c 不能再次发送response xff0c 所以导致错误的就是return的返回值信息 xff0c 这时候把re
  • Object转成JSONObject

    object转jsonObject的时候经常会因为符号报错 xff0c 类似于 xff1a span class token function expect span at span class token number 0 span ac
  • Comparison method violates its general contract!null

    span class token annotation punctuation 64 Override span span class token keyword public span span class token keyword i