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

Вибір Редакції

Різниця між порівнянними і порівняльними в Java

Comparable і Comparator обидва є загальними інтерфейсами в Java, які використовуються для порівняння елементів даних об'єктів. Інтерфейс Comparable присутній у пакеті java.lang, а інтерфейс Comparator присутній у пакунку java.util. Основна відмінність між інтерфейсами Comparable і Comparator полягає в тому, що Comparable інтерфейс надає єдину послідовність сортування, тоді як інтерфейс Comparator забезпечує множинні послідовності сортування. Є деякі інші відмінності між інтерфейсом Comparable і Comparator, який ми вивчатимемо в діаграмі порівняння.

Діаграма порівняння

Основа для порівнянняПорівнянніКомпаратор
ОсновнийІнтерфейс Comparable дозволяє виконувати лише одну послідовність сортування.Інтерфейс Comparator дозволяє виконувати декілька послідовностей сортування.
ПакетиІнтерфейс Comparable присутній у пакунку java.lang.Інтерфейс Comparator присутній у пакунку java.util.
МетодиІнтерфейс Comparable містить лише один метод
public int compareTo (об'єкт obj);
Інтерфейс Comparator містить два методи
public int compare (об'єкт obj1, об'єкт obj2)
логічне значення (Object obj)
РеалізаціяПорівняльний інтерфейс реалізується класом, об'єкти якого порівнюються.Інтерфейс компаратора реалізується класом sperate замість класу, об'єкти якого порівнюються.
ПорівнянняМетод compareTo (Object obj) порівнює об'єкт, який використовується для виклику методу з заданим переходом об'єкта до методу.Метод порівняння (Object obj1, Object obj2) порівнюють обидва вказані об'єкти, які передаються до методу.
Список / масивКоли список об'єкта Comparable type повинен бути порівняний, клас Collection надає метод ie Collections.sort (List lst).Коли список об'єктів Comparable type порівнюється, клас 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 (об'єкт obj); 

Метод повернення CompareTo (Object obj) 0, коли обидва об'єкта, порівняні методом, містять одне і те ж значення, повертає -ve значення, якщо об'єкт, що викликає, менше, ніж вказаний об'єкт, і повертає + ve значення, якщо об'єкт, що викликає, має більший Клас Collections надає метод сортування для сортування елементів списку. Елементи списку (і масиву) типу Comparable можуть бути сортовані за допомогою методу “Collections.sort (List lst)”.

Визначення компаратора

Компаратор - це інтерфейс, який доступний у пакеті java.util. Інтерфейс Comparator не реалізований на класі, об'єкти якого порівнюються, а не окремий клас реалізує інтерфейс Comparator, так що логіка сортування застосовується до кожного елементу даних об'єкта в іншому класі. Компаратор містить два способи:

 public int compare (об'єкт obj1, об'єкт obj2) і булев-рівне (Object obj) 

Метод compare () вище порівнює перший об'єкт obj1 з другим об'єктом obj2. Метод compare () повертає 0, коли обидва об'єкта, порівняні методом, містять одне і те ж значення, повертає -ve значення, якщо об'єкт obj1 менше, ніж об'єкт obj2 і повертає + ve значення, якщо об'єкт obj1 має більше значення порівняно до об'єкта obj2. Метод equals () перевіряє, чи заданий об'єкт дорівнює об'єкту, що викликає. Метод equals () повертає true, якщо обидва об'єкти, що порівнюються, рівні, інакше він повертає false . Клас "Колекції" надає метод сортування елементів списку і типу компаратора. Елементи списку типів компараторів сортуються за методом Collections.sort (List, Comparator).

Ключові відмінності між порівнянними та порівняльними

  1. Порівняний інтерфейс дозволяє одноразову послідовність сортування, що означає, що можна порівняти тільки один елемент даних об'єкта в методі compareTo (), з іншого боку інтерфейс Comparator дозволяє множинні послідовності сортування, що означає, що можна порівняти кілька елементів даних об'єкта.
  2. Інтерфейс Comparable реалізується класом, об'єкти якого порівнюються, оскільки логіка сортування визначається всередині одного класу. З іншого боку, інтерфейс Comparator не реалізується класом, об'єкти якого порівнюються, оскільки логіка сортування визначається в окремих класах, де кожен клас визначає сортування на одному елементі даних об'єкта, і ці визначні класи реалізує інтерфейс Comparator .
  3. Інтерфейс Comparable лежить всередині java.lang, тоді як інтерфейс Comparator лежить всередині пакета java.util.
  4. Порівняльний інтерфейс оголошує тільки один метод, який є compareTo (Object obj), тоді як інтерфейс Comparator оголошує два методи, які є, порівняйте (Object obj1, Object obj2) і дорівнює (Object obj).
  5. Метод compareTo (Object obj) в Comparable порівнює об'єкт виклику методу з заданим об'єктом, який передається методу, тоді як метод порівняння (Object obj1, Object obj2) Comparator порівнює об'єкти obj1 з obj2, які передаються методу.
  6. Клас "Колекції" надає метод сортування "Collections.sort (Список lst)" для сортування об'єктів типу Comparable. Клас Колекції надає метод сортування Collections.sort (List, Comparator) для сортування об'єктів типу Comparator.

Висновок:

Якщо ви хочете відсортувати об'єкти в природному порядку, то ви можете скористатися порівнянним інтерфейсом, який ви хочете відсортувати об'єкти на основі будь-якого атрибута, тоді використовується інтерфейс Comparator.

Top