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

Съдържание:

Anonim

Какво е сравнима в Java?

Сравним в Java е обект за сравнение с друг обект. Помага за сортиране на списъка с персонализирани обекти. Интерфейсът java.lang.Comparable трябва да бъде реализиран от клас, за да се сравнят неговите екземпляри. Масив от обекти, реализиращи сравним интерфейс, се сортира автоматично от методите Arrays.sort и Collections.sort.

В този урок за сравнение срещу сравним в Java ще научите:

  • Какво е сравнима в Java?
  • Какво е Comparator в Java?
  • Метод, използван в Сравним:
  • Метод, използван в Comparator:
  • Разлика между сравним срещу сравнителен в Java
  • Най-добри практики при използване на сравнителни и сравними в Java

Какво е Comparator в Java?

Comparator в Java е обект за сравняване на различни обекти от различни класове. Интерфейсът за сравнение в Java също се използва за подреждане на обектите на дефинирани от потребителя класове. Той включва два важни метода за сравнителен интерфейс, известни като сравнение (Object obj1, Object obj2) и equals (Object element).

КЛЮЧОВИ РАЗЛИКИ:

  • Comparable осигурява метод compareTo () за сортиране на елементи в Java, докато Comparator осигурява метод compare () за сортиране на елементи в Java.
  • Сравним интерфейс присъства в пакета java.lang, докато интерфейсът за сравнение присъства в пакета java.util.
  • Comparable осигурява единична последователност за сортиране, докато Comparator осигурява множество последователности за сортиране.
  • Сравнимо засяга оригиналния клас, докато сравнителният не засяга оригиналния клас.

Метод, използван в Сравним:

Следва важен метод, използван в сравнимия интерфейс:

Сравни с():

Методът CompareTo () се използва за извършване на естествено сортиране на низ. Смисълът на естественото сортиране е редът на сортиране, който се прилага за обекта, например числов ред за сортиране на цели числа, азбучен ред за String и др.

Синтаксисът на метода 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

Метод, използван в Comparator:

Следват важните методи, използвани в сравнителния интерфейс:

Сравни ():

Compare () ви позволява да поръчате обекти. За да направите това, трябва да създадете клас, който реализира сравнителен интерфейс. След това трябва да замените метода за сравнение.

Синтаксисът на метод сравнение () е както следва:

compare(Object obj1, Object obj2)

В горния синтаксис obj1 и obj2 са два обекта, които трябва да сравните, като използвате метода compare ().

Изход:

  • Той връща отрицателно цяло число, ако първият аргумент е по-малък от втория.
  • Връща нула, ако първият и вторият аргумент са равни.
  • Този метод може да върне положително цяло число, в случай че първият аргумент е по-голям от втория.

Трябва да се уверите, че връзката е преходна. Например, ((сравнение (а, б)> 0) && (сравнение (б, в)> 0)), което предполага сравнение (а, в)> 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 и е обект от подобен тип със същата числова стойност.

Пример за метод на равни:

В примера по-долу сравняваме четирите променливи помежду си. Три променливи са от тип цяло число и една от тип къси. Първият резултат е невярен, тъй като стойността на p, която е 5, не е равна на стойността на q, която е 20.

Вторият резултат е истина, защото стойността на променливите p и r е една и съща, което е 5. И накрая, изходът е false, тъй като променливите 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. Comparator предоставя метод compare () за сортиране на елементи в Java.
Сравним интерфейс присъства в пакета java.lang. Интерфейсът за сравнение присъства в пакета java.util.
Логиката на сортирането трябва да бъде в същия клас, чийто обект ще сортирате. Логиката на сортирането трябва да бъде в отделен клас за писане на различно сортиране въз основа на различни атрибути на обекти.
Класът, чиито обекти искате да сортирате, трябва да реализира сравним интерфейс. Клас, чиито обекти искате да сортирате, не е необходимо да прилагат сравнителен интерфейс.
Той осигурява единични последователности за сортиране. Той осигурява множество последователности за сортиране.
Този метод може да сортира данните според естествения ред на сортиране. Този метод сортира данните според персонализирания ред за сортиране.
Засяга оригиналния клас. т.е. действителният клас се променя. Това не засяга оригиналния клас, т.е. действителният клас не се променя.
Прилага се често в API от: Календар, Класове на обвивки, Дата и Низ. Той е реализиран за сортиране на екземпляри на класове на трети страни.
Всички класове обвивки и клас String изпълняват сравним интерфейс. Единствените внедрени класове на Comparator са Collator и RuleBasedColator.

Най-добри практики при използване на сравнителни и сравними в Java

  • Използвайте сравним интерфейс, когато сравнението е стандартно за конкретния клас.
  • Можете да използвате ламбда с компаратор.
  • Много основни класове, налични в реализира сравним интерфейс.
  • Възможно е да използвате TreeSet и TreeMap или докато сортирате Set или Map.
  • Методът compareTo () работи както с компаратор, така и със сравним.
  • Използвайте сравнителния интерфейс само когато <ви е необходима по-голяма гъвкавост.
  • Методът compareTo () ще върне положително цяло число, ако първият обект е по-голям от другия, отрицателен, ако е по-нисък, и нула, ако и двата са еднакви.