小编Phi*_*per的帖子

无法复制:"比较方法违反了其总合同!"

我收到以下错误:"比较方法违反了其总合同!" 使用以下比较器时,我无法使用jUnit复制异常.我想知道导致这个问题的原因以及如何复制它.有些其他例子有相同的问题,但没有如何复制它.

public class DtoComparator implements Comparator<Dto> {

    @Override
    public int compare(Dto r1, Dto r2) {

        int value = 0;

        value = r1.getOrder() - r2.getOrder();

        if (value == 0 && !isValueNull(r1.getDate(), r2.getDate()))
            value = r1.getDate().compareTo(r2.getDate());

        return value;
    }

    private boolean isValueNull(Date date, Date date2) {
        return date == null || date2 == null;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用以下代码调用代码:

Collections.sort(dtos, new DtoComparator());
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

额外信息:错误似乎发生在Java utils内部的TimSort类中以及名为mergeLo的方法中.链接:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/TimSort.java#TimSort.mergeLo%28int%2Cint%2Cint%2Cint% 29

java sorting compare exception comparator

6
推荐指数
1
解决办法
569
查看次数

标签 统计

comparator ×1

compare ×1

exception ×1

java ×1

sorting ×1