Изучение графических алгоритмов макета

Это сводится к этому утверждению из javadoc :

Сравнивает два аргумента для порядка. Возвращает отрицательное целое число, ноль или положительное целое число, поскольку первый аргумент меньше, равен или больше второго.

blockquote>

Это все, что нужно для этого. Когда вы пишете компаратор, вы определяете , в каком порядке вы хотите. Ключевым моментом является то, что ваш метод возвращает -1, 0 или 1. В зависимости от того, как вы хотите упорядочить эти два входящих аргумента. (и да, ему не нужно -1 или 1, только отрицательный, ноль, положительный).

Другими словами: ключевой момент заключается в том, что compare() служит в этом контракте. Он определяет порядок для двух элементов. Это все, что нужно для этого.

При сортировке данных они будут вызываться каждый раз, когда базовый код сортировки должен знать порядок двух элементов. Таким образом, точный «порядок», в котором происходят эти вызовы, и то, какие аргументы передаются, зависит от фактического алгоритма сортировки и данных, которые вы намереваетесь отсортировать.

С этой точки зрения, ваш вопрос подразумевает, что вы немного продумываете всю тему. Просто поймите: вы используете компаратор, когда намереваетесь определить «пользовательский» порядок для ваших объектов / значений.

И нет смысла определять ваш «собственный» компаратор для int, Int или Integer, так как эти классы уже определяют их естественный порядок, поэтому уже существует, например, Integer.compare () . Единственный вариант использования для определения собственного компаратора для такого класса - это когда вы хотите упорядочить их по-другому. Но, скорее всего, вы все равно использовали бы существующие функции компаратора и использовали другие встроенные способы, например, чтобы изменить «естественный» порядок.

7
задан Community 23 May 2017 в 09:57
поделиться