Java имеет огромное количество классов и интерфейсов для выполнения различных задач по мере необходимости. Я не могу говорить обо всем прямо сейчас, но я (попытаюсь) продемонстрировать, как Comparable & Comparator проделали долгий путь с того места, где они начали.

Итак ... что такого особенного в них упоминать ???. Java предоставила нам Collection Framework для представления и управления группой объектов. Чтобы создать эффективное корпоративное приложение для обработки группы объектов / элементов с помощью Collection Framework, нам необходимо выполнить несколько действий, таких как добавление, поиск, удаление, обход, сортировка и т. Д., Со структурой данных.

О сортировке мы можем поговорить только сейчас. Сортировка - это любой процесс систематической расстановки предметов. Предположим, что нам нужно отсортировать коллекцию объектов Person по их имени, возрасту или зарплате, поэтому для этого нам нужно предоставить различные функции сравнения. С интерфейсами Comparator & Comparable java предоставляет функцию сравнения, которая устанавливает общий порядок для объектов каждого класса, который ее реализует.

Поэтому всякий раз, когда нам нужно отсортировать объекты определенного типа класса, нам нужно создать функцию сравнения, реализовав интерфейс Comparable или Comparator. Мы можем передать эти функции сравнения методу сортировки вспомогательных классов Коллекции или Массивы для сортировки коллекции или можно использовать для управления порядком определенных структур данных (TreeSet или TreeMap), передавая как аргумент конструктора при создании объекта.

Сопоставимо

В интерфейсе Comparable есть только один метод compareTo (T o), обеспечивающий порядок сортировки путем возврата целочисленного значения.

compareTo (T o) возвращает:

Отрицательное целое число, когда объект меньше указанного объекта

Положительное целое число, когда объект больше указанного объекта

Ноль, когда объект равен указанному объекту

Давайте начнем с примера, применив это к коллекции объектов Person.

Затем давайте создадим класс PersonSorter для создания нашей коллекции и попытаемся отсортировать ее с помощью Collections.sort:

По очевидной причине мы получим ошибку времени компиляции, как показано ниже:

Вот причина ошибки времени компиляции: Метод Collections.sort (Список ‹T› list) принимает список, в котором каждый элемент в списке должен реализовывать интерфейс Comparable. Итак, давайте продолжим и реализуем интерфейс Comparable в нашем классе Person и попробуем снова выполнить сортировку.

Повторюсь, порядок сортировки списка объектов определяется методом compareTo. Итак, когда мы запустим PersonSorter, теперь результат будет таким, как показано ниже

PersonList Before Sorting: [Kent, Greg, Josh]
PersonList After Sorting: [Greg, Kent, Josh]

О компараторе поговорим в следующих частях.