comparison method violates 必现

public static void main(String[] args) {
        // list size > 32
        List<Integer> list = new ArrayList<>();
        list.add(5);
        list.add(1);
        list.add(9);
        list.add(5);
        list.add(1);
        list.add(5);
        list.add(11);
        list.add(5);
        list.add(5);
        list.add(1);
        list.add(9);
        list.add(5);
        list.add(1);
        list.add(5);
        list.add(11);
        list.add(5);
        list.add(5);
        list.add(1);
        list.add(9);
        list.add(5);
        list.add(1);
        list.add(5);
        list.add(11);
        list.add(5);
        list.add(5);
        list.add(1);
        list.add(9);
        list.add(5);
        list.add(1);
        list.add(5);
        list.add(11);
        list.add(5);
        list.add(5);
        list.add(1);
        list.add(9);
        list.add(5);
        list.add(1);
        list.add(5);
        list.add(11);
        list.add(5);

        Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 > o2 ? 1 : -1;
            }
        });

        System.out.println(list);
    }

解决

public static void main(String[] args) {
        // list size > 32
        List<Integer> list = new ArrayList<>();
        list.add(5);
        list.add(1);
        list.add(9);
        list.add(5);
        list.add(1);
        list.add(5);
        list.add(11);
        list.add(5);
        list.add(5);
        list.add(1);
        list.add(9);
        list.add(5);
        list.add(1);
        list.add(5);
        list.add(11);
        list.add(5);
        list.add(5);
        list.add(1);
        list.add(9);
        list.add(5);
        list.add(1);
        list.add(5);
        list.add(11);
        list.add(5);
        list.add(5);
        list.add(1);
        list.add(9);
        list.add(5);
        list.add(1);
        list.add(5);
        list.add(11);
        list.add(5);
        list.add(5);
        list.add(1);
        list.add(9);
        list.add(5);
        list.add(1);
        list.add(5);
        list.add(11);
        list.add(5);

        Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1.equals(o2) ? 0 : o1 > o2 ? 1 : -1;
            }
        });

        System.out.println(list);
    }
原文地址:https://www.cnblogs.com/go4mi/p/12457481.html