开发者社区 问答 正文

在 JDK7 版本及以上,Comparator 要满足哪些条件?

在 JDK7 版本上,Comparator 要满足哪些条件?

展开
收起
鲁花花生油 2021-10-12 17:21:31 1275 分享 版权
1 条回答
写回答
取消 提交回答
  • 在 JDK7 版本及以上,Comparator 要满足如下三个条件,不然 Arrays.sort,Collections.sort 会报 IllegalArgumentException 异常。

    说明:三个条件如下

    1) x,y 的比较结果和 y,x 的比较结果相反。

    2) x>y,y>z,则 x>z。

    3) x=y,则 x,z 比较结果和 y,z 比较结果相同。

    反例:下例中没有处理相等的情况,实际使用中可能会出现异常:

    new Comparator () {

    @Override

    public int compare(Student o1, Student o2) {

    return o1.getId() > o2.getId() ? 1 : -1;

    }

    };

    资料来源:电子书《阿里巴巴Java开发手册》,下载链接:https://developer.aliyun.com/topic/download?id=1092

    2021-10-12 17:22:33
    赞同 展开评论