Разница между 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, но должны быть вынуждены покинуть его сообществом.