Що можна порівняти в 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 Comparable та Comparator:
Порівняно | Компаратор |
Comparable забезпечує метод compareTo () для сортування елементів у Java. | Компаратор надає метод compare () для сортування елементів у Java. |
Порівняний інтерфейс присутній у пакунку java.lang. | Інтерфейс порівняння присутній у пакеті java.util. |
Логіка сортування має бути в тому ж класі, об’єкт якого ви збираєтеся сортувати. | Логіка сортування повинна бути в окремому класі, щоб писати різне сортування на основі різних атрибутів об'єктів. |
Клас, об'єкти якого ви хочете сортувати, повинен реалізовувати порівнянний інтерфейс. | Класу, об’єкти якого потрібно сортувати, не потрібно реалізовувати інтерфейс порівняння. |
Він забезпечує одиночні послідовності сортування. | Він забезпечує безліч послідовностей сортування. |
Цей метод дозволяє сортувати дані відповідно до природного порядку сортування. | Цей метод сортує дані відповідно до налаштованого порядку сортування. |
Це впливає на початковий клас. тобто фактичний клас змінено. | Це не впливає на початковий клас, тобто фактичний клас не змінюється. |
Часто впроваджується в API за допомогою: календаря, класів Wrapper, дати та рядка. | Він реалізований для сортування екземплярів сторонніх класів. |
Усі класи обгортки та клас String реалізують порівнянний інтерфейс. | Єдиними реалізованими класами Comparator є Collator та RuleBasedColator. |
Найкращі практики під час використання компаратора та порівняльного в Java
- Використовуйте порівнянний інтерфейс, коли порівняння є стандартним для конкретного класу.
- Можна використовувати лямбди з компаратором.
- Багато основних класів, доступних у реалізації подібного інтерфейсу.
- Можна використовувати TreeSet та TreeMap або під час сортування Set або Map.
- Метод compareTo () працює як із компаратором, так і порівняно.
- Використовуйте інтерфейс порівняння лише тоді, коли вам <потрібна більша гнучкість.
- Метод compareTo () поверне позитивне ціле число, якщо перший об'єкт більше іншого, негативний, якщо він нижчий, і нуль, якщо обидва однакові.