Comparable и Comparator - это общие интерфейсы в Java, используемые для сравнения элементов данных объектов. Интерфейс Comparable присутствует в пакете java.lang, а интерфейс Comparator присутствует в пакете java.util. Основное различие между интерфейсами Comparable и Comparator состоит в том, что интерфейс Comparable обеспечивает единую последовательность сортировки, тогда как интерфейс Comparator обеспечивает несколько последовательностей сортировки. Есть несколько других отличий между интерфейсом Comparable и Comparator, которые мы изучим в Сравнительной таблице.
Сравнительная таблица
Основа для сравнения | сравнимый | компаратор |
---|---|---|
основной | Сопоставимый интерфейс допускает только одну последовательность сортировки. | Интерфейс Comparator позволяет несколько последовательностей сортировки. |
пакеты | Сопоставимый интерфейс присутствует в пакете java.lang. | Интерфейс Comparator присутствует в пакете java.util. |
методы | Сопоставимый интерфейс содержит только один метод public int compareTo (Object obj); | Интерфейс Comparator содержит два метода public int Compare (Объект obj1, Объект obj2) логическое равенство (Object obj) |
Реализация | Сопоставимый интерфейс реализуется классом, чьи объекты должны сравниваться. | Интерфейс компаратора реализуется отдельным классом вместо класса, чьи объекты должны сравниваться. |
сравнение | Метод compareTo (Object obj) сравнивает объект, который используется для вызова метода, с указанным объектом, переданным методу. | Метод сравнения (Object obj1, Object obj2) сравнивает оба указанных объекта, которые передаются в метод. |
Список / Массив | Когда необходимо сравнить список объектов типа Comparable, класс Collection предоставляет метод ie Collections.sort (List lst). | Когда необходимо сравнить список объектов типа Comparable, класс Collection предоставляет метод, т.е. Collections.sort (список, компаратор). |
Определение сопоставимого
Comparable - это интерфейс, который доступен в пакете java.lang. Класс реализует интерфейс Comparator для сортировки своего объекта в естественном порядке. Сортировка объектов в естественном порядке означает, что объекты сравниваются по их значениям ASCII. Классами, реализующими интерфейс Comparable, являются классы Byte, Character, Double, Float, Long, Short, String и Integer. Даже класс Date и Calander также реализует интерфейс Comparable.
Интерфейс Comparable содержит только один метод CompareTo (Object obj). Этот метод сравнивает объект, используемый для вызова метода, с объектом, указанным в параметре. Синтаксис метода следующий:
public int compareTo (Object obj);
Метод CompareTo (Object obj) возвращает 0, когда оба объекта, сравниваемые методом, содержат одно и то же значение, он возвращает значение -ve, если вызывающий объект меньше указанного объекта, и возвращает значение + ve, если вызывающий объект имеет больший значение по сравнению с указанным объектом. Класс Collections предоставляет метод sort для сортировки элементов списка. Элементы списка (и массива) типа Comparable можно отсортировать с помощью метода «Collections.sort (List lst)».
Определение компаратора
Comparator - это интерфейс, который доступен в пакете java.util. Интерфейс Comparator не реализован в классе, чьи объекты должны сравниваться, вместо этого отдельный класс реализует интерфейс Comparator, так что логика сортировки применяется к каждому элементу данных объекта в другом классе. Компаратор содержит два метода следующим образом:
public int Compare (объект obj1, объект obj2) и логическое равенство (объект obj)
Приведенный выше метод сравнения () сравнивает первый объект obj1 со вторым объектом obj2. Метод compare () возвращает 0, если оба объекта, сравниваемых методом, содержат одно и то же значение, он возвращает -ve значение, если объект obj1 меньше, чем объект obj2, и возвращает + ve значение, если объект obj1 имеет большее значение по сравнению к объекту obj2. Методы equals () проверяют, равен ли указанный объект вызывающему объекту. Метод equals () возвращает true, если оба сравниваемых объекта равны, иначе возвращает false . Класс Collections предоставляет метод для сортировки элементов списка и типа компаратора. Элементы списка типов компараторов сортируются методом Collections.sort (List, Comparator).
Ключевые различия между сопоставимым и компаратором
- Сопоставимый интерфейс допускает одну последовательность сортировки, что означает, что вы можете сравнивать только один элемент данных объекта в методе compareTo (), с другой стороны, интерфейс Comparator позволяет выполнять несколько последовательностей сортировки, что означает, что вы можете сравнивать несколько элементов данных объекта.
- Интерфейс Comparable реализуется классом, чьи объекты должны сравниваться, поскольку логика сортировки определена внутри того же класса. С другой стороны, интерфейс Comparator не реализован классом, чьи объекты должны сравниваться, поскольку логика сортировки определяется в отдельных классах, где каждый класс определяет сортировку по одному элементу данных объекта, и эти определяющие классы реализуют интерфейс Comparator.,
- Интерфейс Comparable находится в пакете java.lang, а интерфейс Comparator - в пакете java.util.
- Интерфейс Comparable объявляет только один метод - CompareTo (Object obj), тогда как интерфейс Comparator объявляет два метода: Compare (Object obj1, Object obj2) и equals (Object obj).
- Метод compareTo (Object obj) в Comparable сравнивает метод, вызывающий объект, с указанным объектом, переданным методу, тогда как метод Comparator (Object obj1, Object obj2) сравнивает объекты obj1 с obj2, которые передаются в метод.
- Класс Collections предоставляет метод сортировки Collections.sort (List lst) для сортировки объектов типа Comparable. Класс Collections предоставляет метод сортировки Collections.sort (List, Comparator) для сортировки объектов типа Comparator.
Заключение:
Если вы хотите отсортировать объекты в естественном порядке, то вы можете использовать сопоставимый интерфейс, иначе вы хотите отсортировать объекты по любому атрибуту, тогда используется интерфейс Comparator.