Разница между Collection.sort(список) и list.sort()
Есть ли какая-то причина, по которой я должен предпочесть метод Collection.sort(list)
для простого вызова list.sort()
? Внутренне Collection.sort
просто вызывает метод sort
класса List
.
Просто удивительно, что почти все говорят мне использовать Collection.sort
. Почему?
Ответы
Ответ 1
Метод List.sort(comparator)
, о котором вы говорите, был введен в Java 8, тогда как метод утилиты Collections.sort
существует с момента появления Java 1.2.
Таким образом, вы найдете много ссылок в Интернете, в которых упоминается этот метод, но это только потому, что он был в JDK намного дольше.
Обратите внимание, что изменение в реализации для Collections.sort
было выполнено в 8u20.
Ответ 2
Это просто изменение API. С языком с таким широким распространением, как Java, что обычно происходит в течение определенного периода времени, более старый метод является предпочтительным, чтобы поддерживать устаревшую поддержку.
По истечении этого времени старый API становится устаревшим (или, возможно, нет, оба могут оставаться на неопределенном месте). В течение этого периода времени могут быть внесены изменения в новый API, что приводит к тому, что его функциональность немного отличается от первоначальной реализации, поощряя разработчиков к ее принятию. Требования/результаты нового API могут немного расходиться, и реализация может резко измениться.
Затем, в конце концов, новый API берет на себя, и более старый API больше не требуется и не удаляется. На языке с таким широким внедрением, как Java, это может занять годы или десятилетия. Разработчики могут иметь план для удаления API, но должны быть вынуждены покинуть его сообществом.