Pull to refresh

Почему в 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);

Невозможность использования с дженериками — одна из главных особенностей примитивов. Ну и причина, по которой массив интов нельзя отсортировать по убыванию)

Tags:
Total votes 3: ↑3 and ↓0+3
Comments13

Articles