Препоръчано, 2024

Избор На Редактора

Разлика между сравнима и сравнителна в Java

Comparable and Comparator И двете са общите интерфейси в Java, използвани за сравняване на елементите от данни на обектите. Интерфейсът Comparable присъства в пакета java.lang, а интерфейсът Comparator присъства в пакета java.util. Основната разлика между интерфейсите Comparable и Comparator е, че Comparable интерфейсът осигурява единична последователност на сортиране, докато интерфейсът Comparator осигурява множество последователности за сортиране. Има някои други разлики между интерфейса за сравняване и сравняване, които ще изучаваме в таблицата за сравнение.

Сравнителна таблица

Основа за сравнениеподобенсравняване
ОсновенИнтерфейсът за сравняване позволява само една последователност за сортиране.Интерфейсът Comparator позволява множество последователности за сортиране.
ПакетиИнтерфейсът Comparable присъства в пакета java.lang.Интерфейсът Comparator присъства в пакета java.util.
методиИнтерфейсът за сравняване съдържа само един метод
public int compareTo (Обект);
Интерфейсът Comparator съдържа два метода
public int сравнение (Object obj1, Object obj2)
булево равно (Object obj)
изпълнениеСравним интерфейс се изпълнява от класа, чиито обекти трябва да се сравняват.Интерфейсът за сравняване е реализиран от клас sperate вместо към класа, чиито обекти трябва да бъдат сравнени.
сравнениеМетодът compareTo (Object obj) сравнява обекта, който се използва за извикване на метода с посочения обект преминава към метода.Методът за сравнение (Object obj1, Object obj2) сравнява двата зададени обекта, които се предават на метода.
Списък / ArrayКогато списък на обекта от тип Comparable трябва да бъде сравнен, класът Collection предоставя метод т.е. Collections.sort (Списък lst).Когато списък на обекти от Comparable type трябва да се сравни, класът Collection предоставя метод т.е.
Collections.sort (Списък, компаратор).

Определение за сравнима

Comparable е интерфейс, който е достъпен в пакета java.lang. Клас реализира интерфейса Comparator, за да сортира обекта си в естествен ред. Обектите са сортирани в естествен ред, което означава, че обектите се сравняват по техните ASCII стойности. Класовете, които реализират Comparable интерфейса, са Byte, Character, Double, Float, Long, Short, String и Integer класове. Дори класа Date и Calander също изпълнява интерфейса Comparable.

Интерфейсът за сравняване съдържа само един метод, който е CompareTo (Object obj). Този метод сравнява обекта, използван за извикване на метода с обекта, посочен в параметъра. Синтаксисът на метода е следният:

 public int compareTo (Обект); 

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

Определение на компаратор

Comparator е интерфейс, който се предлага в пакета java.util. Интерфейсният компаратор не е реализиран в класа, чиито обекти трябва да се сравняват, а отделен клас реализира интерфейса на Comparator, така че логиката за сортиране се прилага към всеки елемент от обекта в различен клас. Сравнителят съдържа два метода, както следва:

 public int compare (Object obj1, Object obj2) и boolean равно (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. Интерфейсът Comparable обявява само един метод, който е 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