Разница между orderBy из спящего режима и Collections.sort () - PullRequest
0 голосов
/ 15 марта 2020

В чем разница между использованием порядка по hibernate и Collections.sort () из Java? Временная сложность Collections.sort () равна O (nlogn), а значение orderBy должно быть равно O (1). Тем не менее, обработка БД также должна иметь некоторые накладные расходы. Можно ли использовать Collections.sort () в тех случаях, когда использование orderBy невозможно?

Ответы [ 2 ]

1 голос
/ 15 марта 2020

Вы можете использовать любой из них. Обычно они оба должны быть O (nlogn) (поскольку в базе данных также должен применяться алгоритм сортировки, и он не лучше алгоритма сортировки в коллекциях).

Я бы использовал базу данных orderBy, если это возможно (*) , поскольку вы можете ограничить объем данных, отправляемых из базы данных (по крайней мере, в тех случаях, когда вас интересует только первая часть соответствующих данных).

(*) Существуют ситуации, когда вы хотите, чтобы вы реализовали «странный» порядок сортировки (ie «сортировка по 2-й букве третьего слова»), и тогда лучше сделать это в Java, но в большинстве случаев порядокBy достаточен и следовательно, предпочтительнее.

1 голос
/ 15 марта 2020

Имейте в виду, что order by в БД применяется ко всем строкам. Хотя вы можете применять Collections.sort только к «загруженным» строкам.

Итак, если у вас 1000 строк и вы хотите выбрать первые 10 в соответствии с порядком, для использования Collections.sort вам потребуется получить все строки перед сортировкой, в то время как order by вы бы выбрали только 10, которые вы хотите.

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