Как правило, объекты в Java (включая Коллекции) сравниваются с их методами по умолчанию hashCode () и equals (). Для встроенных объектов и типов данных (таких как String, Integet и т. Д.) HashCode () вычисляется внутренне, и, следовательно, они используются в соответствии с требованиями JLS (Спецификация языка Java).
Поскольку мы не всегда можем зависеть от стандартных / встроенных объектов и нам нужно иметь дело с нашими собственными объектами (такими как Employee, Customer и т. Д.), Нам необходимо переопределить hashCode () и equals () метод, чтобы мы могли предоставить истину / ложь в соответствии с «ЛУЧШИМ» равенством объектов наших пользовательских классов.
Similary, sort () включает в себя действие сравнения, которому действительно нужен Comparator (который является классом, реализующим интерфейс Comparator с переопределенным методом сравнения). Вам также следует переопределить метод сравнения, который берет два сравниваемых объекта и возвращает результат (0 для равных, 1 для 1-го объекта больше второго, 2 для обратного варианта 1).
Теперь ваши данные должны обрабатываться по-другому, что значительно отличается от обычного сравнения. Вам нужно разделить данные на две части (используя метод разделения, который вы можете сделать), а затем вы можете выполнить отдельное сравнение по двум параметрам (первая часть перед двоеточием, вторая часть после двоеточия).
Наконец, вы должны предоставить экземпляр этого пользовательского компаратора для метода sort, который в конечном итоге будет выполнять пользовательскую сортировку для ваших пользовательских данных:)