Почему я не могу использовать Comparator для сортировки примитивов? - PullRequest
2 голосов
/ 30 декабря 2010

Поскольку в Java 5 есть автобокс, почему я не могу использовать Comparator для сортировки примитивов?int не будет помещен в Integer?

Ответы [ 2 ]

6 голосов
/ 30 декабря 2010

Arrays.sort(..) имеют специальные перегрузки для сортировки примитивных массивов.

Если вам нужны какие-то особые правила сортировки, кроме стандартных, боюсь, вам придется использовать автобокс. В дополнение к этому вам придется преобразовать ваш массив в Integer[], потому что int[] не имеет автоматической коробки.

И если вы говорите не о массивах, а о коллекциях - тогда у вас нет выбора - коллекции могут содержать только объекты.

5 голосов
/ 30 декабря 2010

Поскольку вы не можете параметризовать Comparator<T> - или любой другой параметризованный тип - примитивным типом.

Да, это очень раздражает ... вы не можете сделать List<int> илиMap<String, boolean> и т. Д., И вы не можете написать универсальные методы, которые работают как для типов объектов, так и для примитивов.Вы должны иметь специальные методы для каждого из 8 типов примитивов.Но это дизайн, который мы придерживались с Java 1. Обвинение Джеймс Гослинг; -)

Как указывает Божо, Arrays.sort(...) предоставляет все необходимые методы сортировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...