Rozdiel medzi porovnateľnými a komparátormi v Jave

Obsah:

Anonim

Čo je porovnateľné v Jave?

Porovnateľný v Jave je objekt na porovnanie s iným objektom. Pomáha triediť zoznam vlastných objektov. Rozhranie java.lang.Comparable by mala byť implementovaná triedou, aby bolo možné porovnať jej inštancie. Pole objektov implementujúcich porovnateľné rozhranie je automaticky triedené metódami Arrays.sort a Collections.sort.

V tomto návode Komparátor vs Porovnateľné v Jave sa dozviete:

  • Čo je porovnateľné v Jave?
  • Čo je komparátor v Jave?
  • Metóda použitá v porovnateľnom:
  • Metóda použitá v komparátore:
  • Rozdiel medzi porovnateľným a komparátorom v Jave
  • Osvedčené postupy pri používaní komparátora a porovnateľného v jazyku Java

Čo je komparátor v Jave?

Comparator in Java je objekt na porovnávanie rôznych objektov rôznych tried. Porovnávacie rozhranie v Jave sa používa aj na usporiadanie objektov tried definovaných používateľom. Zahŕňa dve dôležité metódy komparačného rozhrania známe ako komparácia (Object obj1, Object obj2) a equals (Object element).

KĽÚČOVÉ ROZDIELY:

  • Porovnateľná poskytuje metódu porovnania () na triedenie prvkov v Jave, zatiaľ čo komparátor poskytuje metódu porovnania () na triedenie prvkov v Jave.
  • Porovnateľné rozhranie je k dispozícii v balíku java.lang, zatiaľ čo porovnávacie rozhranie je k dispozícii v balíku java.lail.
  • Comparable poskytuje jednu radiacu sekvenciu, zatiaľ čo Comparator poskytuje viac radiacich sekvencií.
  • Porovnateľné ovplyvňuje pôvodnú triedu, zatiaľ čo komparátor neovplyvňuje pôvodnú triedu.

Metóda použitá v porovnateľnom:

Nasleduje dôležitá metóda použitá v porovnateľnom rozhraní:

Porovnať s():

Na vykonanie prirodzeného triedenia na reťazci sa používa metóda CompareTo (). Význam prirodzeného triedenia je poradie triedenia, ktoré sa vzťahuje na objekt, napr. Číselné poradie pre triedenie celých čísel, abecedné poradie pre reťazec atď.

Syntax metódy CompareTo () je nasledovná:

int compareTo(T obj)

Vo vyššie uvedenej syntaxi T označuje typ objektov, ktoré budete porovnávať.

Metóda CompareTo () porovnáva objekt s T obj.

Výkon:

  • Ak sú hodnoty rovnaké, vráti hodnotu 0.
  • V prípade, že ak má objekt menšiu hodnotu, potom táto metóda vráti zápornú hodnotu.
  • Ak má objekt vyššiu hodnotu, vráti kladnú hodnotu.

Príklad metódy CompareTo ():

Nasledujúci program porovnateľného príkladu Java ukazuje porovnanie dvoch znakov „a“ a „b“. Znak „a“ je pred „b“ abecedne.

Preto je výstup -1. Znak „b“ nasleduje za „a“ v abecednom poradí. Preto je výstup 1. Znak „a“ a „b“ sú obidva ekvivalentné. Preto je výstup 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"));}}

Výkon

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

Metóda použitá v komparátore:

Nasledujú dôležité metódy používané v komparátorovom rozhraní:

Porovnať ():

Funkcia Compare () umožňuje objednávať objekty. Aby ste to dosiahli, musíte vytvoriť triedu, ktorá implementuje komparátorové rozhranie. Potom musíte prepísať metódu porovnávania.

Syntax metódy compare () je nasledovná:

compare(Object obj1, Object obj2)

Vo vyššie uvedenej syntaxi sú obj1 a obj2 dva objekty, ktoré musíte porovnať pomocou metódy compare ().

Výkon:

  • Vráti záporné celé číslo, ak je prvý argument menší ako druhý.
  • Vráti nulu, ak je prvý a druhý argument rovnaký.
  • Táto metóda môže vrátiť kladné celé číslo v prípade, že prvý argument je väčší ako druhý.

Musíte sa ubezpečiť, že vzťah je tranzitívny. Napríklad ((porovnanie (a, b)> 0) && (porovnanie (b, c)> 0)), z čoho vyplýva porovnanie (a, c)> 0.

Príklad porovnania metódy:

V nasledujúcom programe príkladu porovnávača Java je 6 premenných. „x“, „y“, „p“, „q“, „r“ a „s“. Výstup je -1 ako hodnota „x“, 20 je menšia ako hodnota „y“, 30. Výstup je 0, pretože hodnota „p“, 40 sa rovná hodnote „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));}}

Výkon:

-101

Rovná sa ():

Equals () overuje, či sa číselný objekt rovná objektu, ktorý sa odovzdáva ako argument alebo nie.

Syntax metódy equals () je nasledovná:

public boolean equals (Objekt o)

Táto metóda trvá dva parametre 1) akýkoľvek objekt 2) návratová hodnota. Vráti hodnotu true, ak zadaný argument nemá hodnotu null a je objektom podobného typu s rovnakou číselnou hodnotou.

Príklad metódy Equals:

V nasledujúcom príklade porovnávame tieto štyri premenné navzájom. Tri premenné sú typu integer a jedna typu short. Prvý výsledok je nepravdivý, pretože hodnota p, ktorá je 5, sa nerovná hodnote q, ktorá je 20.

Druhý výsledok je pravdivý, pretože hodnota premenných p a r je rovnaká, čo je 5. Nakoniec je výstup nepravdivý, pretože premenné p a s majú rôzne priradené hodnoty.

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));}}

Výkon

falsetruefalse

Rozdiel medzi porovnateľným a komparátorom v Jave

Rozdiel medzi porovnateľným a komparátorom v Jave

Tu sú hlavné rozdiely medzi programom Java Comparable vs Comparator:

Porovnateľné Komparátor
Comparable poskytuje metódu compareTo () na triedenie prvkov v Jave. Comparator poskytuje metódu porovnávania () na triedenie prvkov v Jave.
Porovnateľné rozhranie je k dispozícii v balíku java.lang. Rozhranie komparátora sa nachádza v balíku java.util.
Logika triedenia musí byť v tej istej triede, ktorej objekt sa chystáte triediť. Logika triedenia by mala byť v samostatnej triede, aby bolo možné písať rôzne triedenia na základe rôznych atribútov objektov.
Trieda, ktorej objekty chcete triediť, musí implementovať porovnateľné rozhranie. Class, ktorého objekty chcete triediť, nemusíte implementovať komparátorové rozhranie.
Poskytuje jednotlivé triediace sekvencie. Poskytuje viac triediacich sekvencií.
Táto metóda umožňuje triedenie údajov podľa prirodzeného poradia triedenia. Táto metóda triedi údaje podľa prispôsobeného poradia triedenia.
Ovplyvňuje pôvodnú triedu. tj je zmenená skutočná trieda. Neovplyvňuje pôvodnú triedu, tj skutočná trieda sa nemení.
V API ich často implementujú : kalendár, triedy obálky, dátum a reťazec. Je implementovaný na triedenie inštancií tried tretích strán.
Všetky triedy wrapperov a triedy String implementujú porovnateľné rozhranie. Jediné implementované triedy komparátora sú Collator a RuleBasedColator.

Osvedčené postupy pri používaní komparátora a porovnateľného v jazyku Java

  • Ak je porovnanie pre konkrétnu triedu štandardné, použite porovnateľné rozhranie.
  • Môžete použiť lambdy s komparátorom.
  • Mnoho základných tried dostupných v implementuje porovnateľné rozhranie.
  • Je možné použiť TreeSet a TreeMap alebo pri triedení Setu alebo Mapy.
  • Metóda compareTo () pracuje s komparátorom aj porovnateľne.
  • Rozhranie komparátora používajte, iba ak
  • Metóda compareTo () vráti kladné celé číslo, ak je prvý objekt väčší ako druhý, záporné, ak je menšie, a nula, ak sú oba rovnaké.