Какой будет среда выполнения этого метода сравнения?
Это зависит от того, как вы его реализуете (!). Однако, если вы просто сравниваете значения полей age
и / или name
в соответствующих объектах, это должно быть O(1)
.
Сложность алгоритма сортировки обычно указывается с точки зрения количества сравнений, которые он выполняет. Таким образом, если выбранный алгоритм сортировки равен O(NlogN)
, а ваш Comparator
равен O(1)
, мы можем предсказать 1 , что общая сложность будет O(NlogN x 1)
или O(NlogN)
.
Быстрее ли выполнить какой-либо собственный метод сортировки сам?
Нет. Это, конечно, не улучшит сложность, если вы реализуете пользовательскую сортировку. (Вы не можете сделать лучше, чем O(NlogN)
для однопоточной сортировки общего назначения.)
Если вы вручную «встроите» код сравнения в свою пользовательскую сортировку, вы все равно будете выполнять те же операции для сравнения полей и делать то же количество раз.
В более общем смысле алгоритмы, используемые встроенным sort(...)
в Java 8 и более поздних версиях, представляют собой современные алгоритмы. Вы вряд ли улучшите их без значительных затрат (на разработку и / или ремонтопригодность).
Этот вопрос пахнет " преждевременная оптимизация ". Пожалуйста, прочитайте, что это значит и почему это (обычно) плохо.
1 - Я не утверждаю, что это правильное доказательство. Хотя я думаю, что правильное доказательство даст и этот ответ.