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

Зміст:

Anonim

Що можна порівняти в Java?

Порівняний в Java - це об’єкт для порівняння з іншим об’єктом. Це допомагає відсортувати список нестандартних об'єктів. Інтерфейс java.lang.Comparable повинен бути реалізований класом для порівняння його екземплярів. Масив об’єктів, що реалізують порівнянний інтерфейс, сортується автоматично методами Arrays.sort та Collections.sort.

У цьому посібнику «Порівняльник проти порівняльного в Java» ви дізнаєтесь:

  • Що можна порівняти в Java?
  • Що таке порівняльник у Java?
  • Метод, використаний у порівнянні:
  • Метод, використаний у компараторі:
  • Різниця між порівнянним та порівняльним у Java
  • Найкращі практики під час використання компаратора та порівняльного в Java

Що таке порівняльник у Java?

Порівняльник в Java - це об’єкт для порівняння різних об’єктів різних класів. Інтерфейс порівняння в Java також використовується для впорядкування об'єктів визначених користувачем класів. Він включає два важливі методи інтерфейсу порівняння, відомі як порівняння (Object obj1, Object obj2) та дорівнює (Object element).

ОСНОВНІ ВІДМІННОСТІ:

  • Comparable забезпечує метод compareTo () для сортування елементів у Java, тоді як Comparator забезпечує метод compare () для сортування елементів у Java.
  • Порівнянний інтерфейс присутній у пакеті java.lang, тоді як інтерфейс порівняння присутній у пакеті java.util.
  • Comparable забезпечує одну послідовність сортування, тоді як Comparator - кілька послідовностей сортування.
  • Порівняння впливає на початковий клас, тоді як порівняльник не впливає на оригінальний клас.

Метод, використаний у порівнянні:

Нижче наведено важливий метод, що використовується в порівнянному інтерфейсі:

CompareTo ():

Метод CompareTo () використовується для природного сортування рядка. Сенс природного сортування - це порядок сортування, який застосовується до об’єкта, наприклад, числовий порядок для сортування цілих чисел, алфавітний порядок для рядка тощо.

Синтаксис методу CompareTo () такий:

int compareTo(T obj)

У наведеному вище синтаксисі T означає тип об’єктів, які ви збираєтеся порівнювати.

Метод CompareTo () порівнює об’єкт з T obj.

Вихід:

  • Він повертає 0, якщо значення рівні.
  • У випадку, якщо об'єкт має меншу вартість, цей метод повертає від'ємне значення.
  • Якщо об’єкт має вищу вартість, він повертає додатне значення.

Приклад методу CompareTo ():

Наступний приклад порівнянної програми Java показує порівняння двох символів, "a" і "b". Символ "а" стоїть перед "b" за алфавітом.

Отже, результат -1. Символ "b" стоїть після "a" за алфавітом. Отже, висновок дорівнює 1. Символ "a" та "b" обидва рівнозначні. Отже, вихід 0.

public class Sample_String {public static void main(String[] args) {String str_Sample = "a";System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));str_Sample = "b";System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));str_Sample = "b";System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));}}

Вихідні дані

Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0

Метод, використаний у компараторі:

Нижче наведені важливі методи, що використовуються в інтерфейсі порівняння:

Порівняти ():

Compare () дозволяє впорядковувати об’єкти. Для цього вам потрібно створити клас, який реалізує інтерфейс порівняння. Після цього вам потрібно замінити його метод порівняння.

Синтаксис методу compare () такий:

compare(Object obj1, Object obj2)

У наведеному вище синтаксисі obj1 та obj2 - це два об’єкти, які потрібно порівняти за допомогою методу compare ().

Вихід:

  • Він повертає від’ємне ціле число, якщо перший аргумент менший за другий.
  • Повертає нуль, якщо перший і другий аргументи рівні.
  • Цей метод може повертати додатне ціле число, якщо перший аргумент більший за другий.

Ви повинні переконатися, що відношення є транзитивним. Наприклад, ((порівняння (a, b)> 0) && (порівняння (b, c)> 0)), що передбачає порівняння (a, c)> 0.

Порівняйте приклад методу:

У наведеному нижче прикладі програми порівняння Java є 6 змінних. "x", "y", "p", "q", "r" та "s". Вихід дорівнює -1 як значення "x", 20 менше значення "y", 30. Вихід дорівнює 0, оскільки значення "p", 40 дорівнює значенню "q", 40 .

import java.lang.Integer;public class example {public static void main(String args[]){int x = 20;int y = 30;// as 10 less than 20,// Output will be a value less than zeroSystem.out.println(Integer.compare(x, y));int p = 40;int q = 40;// as 30 equals 30,// Output will be zeroSystem.out.println(Integer.compare(p, q));int r = 20;int s = 7;// as 15 is greater than 8,// Output will be a value greater than zeroSystem.out.println(Integer.compare(r, s));}}

Вихід:

-101

Дорівнює ():

Equals () перевіряє, чи дорівнює об'єкт числа об'єкту, який передається як аргумент чи ні.

Синтаксис методу equals () такий:

відкритий логічний дорівнює (об'єкт o)

Цей метод приймає два параметри 1) будь-який об'єкт 2) повернене значення. Він повертає true, якщо переданий аргумент не має значення null і є об'єктом подібного типу, що має однакове числове значення.

Приклад методу Equals:

У наведеному нижче прикладі ми порівнюємо чотири змінні між собою. Три змінні мають ціле число типу, а одну - коротке. Перший результат хибний, оскільки значення p, яке дорівнює 5, не дорівнює значенню q, яке дорівнює 20.

Другий результат є істинним, оскільки значення змінних p і r однакові, що дорівнює 5. Нарешті, результат є хибним, оскільки змінні p і s мають різні призначені значення.

public class Test {public static void main(String args[]) {Integer p = 5;Integer q = 20;Integer r =5;Short s = 5;System.out.println(p.equals(q));System.out.println(p.equals(r));System.out.println(p.equals(s));}}

Вихідні дані

falsetruefalse

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

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

Ось основні відмінності між Java Comparable та Comparator:

Порівняно Компаратор
Comparable забезпечує метод compareTo () для сортування елементів у Java. Компаратор надає метод compare () для сортування елементів у Java.
Порівняний інтерфейс присутній у пакунку java.lang. Інтерфейс порівняння присутній у пакеті java.util.
Логіка сортування має бути в тому ж класі, об’єкт якого ви збираєтеся сортувати. Логіка сортування повинна бути в окремому класі, щоб писати різне сортування на основі різних атрибутів об'єктів.
Клас, об'єкти якого ви хочете сортувати, повинен реалізовувати порівнянний інтерфейс. Класу, об’єкти якого потрібно сортувати, не потрібно реалізовувати інтерфейс порівняння.
Він забезпечує одиночні послідовності сортування. Він забезпечує безліч послідовностей сортування.
Цей метод дозволяє сортувати дані відповідно до природного порядку сортування. Цей метод сортує дані відповідно до налаштованого порядку сортування.
Це впливає на початковий клас. тобто фактичний клас змінено. Це не впливає на початковий клас, тобто фактичний клас не змінюється.
Часто впроваджується в API за допомогою: календаря, класів Wrapper, дати та рядка. Він реалізований для сортування екземплярів сторонніх класів.
Усі класи обгортки та клас String реалізують порівнянний інтерфейс. Єдиними реалізованими класами Comparator є Collator та RuleBasedColator.

Найкращі практики під час використання компаратора та порівняльного в Java

  • Використовуйте порівнянний інтерфейс, коли порівняння є стандартним для конкретного класу.
  • Можна використовувати лямбди з компаратором.
  • Багато основних класів, доступних у реалізації подібного інтерфейсу.
  • Можна використовувати TreeSet та TreeMap або під час сортування Set або Map.
  • Метод compareTo () працює як із компаратором, так і порівняно.
  • Використовуйте інтерфейс порівняння лише тоді, коли вам <потрібна більша гнучкість.
  • Метод compareTo () поверне позитивне ціле число, якщо перший об'єкт більше іншого, негативний, якщо він нижчий, і нуль, якщо обидва однакові.