Рекомендуем, 2024

Выбор редакции

Разница между Comparable и Comparator в Java

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).

Ключевые различия между сопоставимым и компаратором

  1. Сопоставимый интерфейс допускает одну последовательность сортировки, что означает, что вы можете сравнивать только один элемент данных объекта в методе compareTo (), с другой стороны, интерфейс Comparator позволяет выполнять несколько последовательностей сортировки, что означает, что вы можете сравнивать несколько элементов данных объекта.
  2. Интерфейс Comparable реализуется классом, чьи объекты должны сравниваться, поскольку логика сортировки определена внутри того же класса. С другой стороны, интерфейс Comparator не реализован классом, чьи объекты должны сравниваться, поскольку логика сортировки определяется в отдельных классах, где каждый класс определяет сортировку по одному элементу данных объекта, и эти определяющие классы реализуют интерфейс Comparator.,
  3. Интерфейс Comparable находится в пакете java.lang, а интерфейс Comparator - в пакете java.util.
  4. Интерфейс Comparable объявляет только один метод - CompareTo (Object obj), тогда как интерфейс Comparator объявляет два метода: Compare (Object obj1, Object obj2) и equals (Object obj).
  5. Метод compareTo (Object obj) в Comparable сравнивает метод, вызывающий объект, с указанным объектом, переданным методу, тогда как метод Comparator (Object obj1, Object obj2) сравнивает объекты obj1 с obj2, которые передаются в метод.
  6. Класс Collections предоставляет метод сортировки Collections.sort (List lst) для сортировки объектов типа Comparable. Класс Collections предоставляет метод сортировки Collections.sort (List, Comparator) для сортировки объектов типа Comparator.

Заключение:

Если вы хотите отсортировать объекты в естественном порядке, то вы можете использовать сопоставимый интерфейс, иначе вы хотите отсортировать объекты по любому атрибуту, тогда используется интерфейс Comparator.

Top