Skip to content

sort exception

landon edited this page Sep 14, 2018 · 1 revision

排序引起的异常

        // java.lang.IllegalArgumentException: Comparison method violates its
        // general contract!
        Integer[] array = { 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 2,
                1, 0, 0, 0, 2, 30, 0, 3 };

        // 用这种排序方式,则抛出异常
        // Arrays.sort(array, (i1, i2) -> i1 > i2 ? 1 : -1);
        // 用下面这种排序方式,则无问题
        // return (x < y) ? -1 : ((x == y) ? 0 : 1)
        Arrays.sort(array, (i1, i2) -> i1.compareTo(i2));
Clone this wiki locally