Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.IllegalArgumentException:比较方法违反了它的一般约定,仅在特定的测试用例中_Java_Sorting_Comparator - Fatal编程技术网

java.lang.IllegalArgumentException:比较方法违反了它的一般约定,仅在特定的测试用例中

java.lang.IllegalArgumentException:比较方法违反了它的一般约定,仅在特定的测试用例中,java,sorting,comparator,Java,Sorting,Comparator,这是我的比较器函数: Arrays.sort(intervals, (a, b)->{ return (a[0] > b[0]) ? 1 : ((a[0] < b[0]) ? -1 : ((a[1] > b[1]) ? 1 : -1)); }); 如果您未能涵盖案例,您的代码甚至无法编译 按原样,您的代码可以编译,但它不能满足比较方法的要求。不同的问题 这是总合同: 如果a在a[1]和b[1]切换时没有对称性。下面将解决这个问题 return a[0] >

这是我的比较器函数:

Arrays.sort(intervals, (a, b)->{
    return (a[0] > b[0]) ? 1 : ((a[0] < b[0]) ? -1 : ((a[1] > b[1]) ? 1 : -1)); 
});

如果您未能涵盖案例,您的代码甚至无法编译

按原样,您的代码可以编译,但它不能满足比较方法的要求。不同的问题

这是总合同:


  • 如果a在a[1]和b[1]切换时没有对称性。下面将解决这个问题

    return a[0] > b[0]) ? 1
           : a[0] < b[0] ? -1
           : a[1] > b[1] ? 1
           : a[1] < b[1] ? -1
           : 0; 
    

    1) 张贴你的演示问题。因此,“MRE”将显示如何使用数据创建两个数组,以及如何调用数组上的排序。我们应该能够复制/粘贴/编译/测试代码以查看异常。2) 将问题中的堆栈轨迹以非图像的形式发布。结果永远不会返回0(当a和b相等时应返回)。是否确定第三个?是的,输入3。项目。
    return a[0] > b[0]) ? 1
           : a[0] < b[0] ? -1
           : a[1] > b[1] ? 1
           : a[1] < b[1] ? -1
           : 0; 
    
    Arrays.sort(intervals, Comparator.comparing(c -> c[0]).thenComparing(c -> c[1]));