Почему в java нельзя отсортировать массив интов по убыванию?
Недавно решал задачку, предполагавшую сортировку int[] arr
по убыванию.
Я пытался это сделать минут 5... Иии не отсортировал.
В джава нет вообще ни единого встроенного механизма сортировки массива примитивов по убыванию и вот почему.
Массивы сортируются с помощью метода Arrays.sort(arr), но сортирует он по возрастанию.
Для сортировки по убыванию нужно передать в него компаратор:
int[] arr = {1, 2, 3};
Arrays.sort(arr, (x, y) -> (y - x));
Не буду вдаваться в подробности работы компаратора, потому что такой код даже не скомпилируется! Компаратор не умеет работать с примитивами, ведь он использует дженерик:
public static <T> void sort(T[] a, Comparator<? super T> c);
А так выглядит sort для инта (и такой же метод есть отдельно для каждого примитива):
public static void sort(int[] a);
Невозможность использования с дженериками — одна из главных особенностей примитивов. Ну и причина, по которой массив интов нельзя отсортировать по убыванию)