Razlika između usporedivog i uspoređivača u Javi

Sadržaj:

Anonim

Što je usporedivo u Javi?

Usporediv u Javi je objekt za usporedbu s drugim objektom. Pomaže u sortiranju popisa prilagođenih objekata. Java.lang.Comparable sučelje treba implementirati klasa kako bi usporedila svoje instance. Niz objekata koji implementiraju usporedivo sučelje automatski se sortira metodama Arrays.sort i Collections.sort.

U ovom vodiču za Usporedbu protiv usporedivog u Javi naučit ćete:

  • Što je usporedivo u Javi?
  • Što je Comparator u Javi?
  • Metoda upotrijebljena u Usporedbi:
  • Metoda korištena u usporedbi:
  • Razlika između usporedivog i uspoređivača u Javi
  • Najbolji postupci tijekom korištenja usporednika i usporedivog u Javi

Što je Comparator u Javi?

Usporednik u Javi objekt je za usporedbu različitih objekata različitih klasa. Sučelje za usporedbu u Javi također se koristi za uređenje objekata korisnički definiranih klasa. Uključuje dvije važne metode sučelja za usporedbu poznate kao usporedba (Object obj1, Object obj2) i equals (Object element).

KLJUČNE RAZLIKE:

  • Usporedivo nudi compareTo () metodu za razvrstavanje elemenata u Javi, dok Comparator pruža compare () metodu za razvrstavanje elemenata u Javi.
  • Usporedivo sučelje prisutno je u paketu java.lang, dok je sučelje za usporedbu prisutno u paketu java.util.
  • Usporedivo pruža jednu sekvencu sortiranja, dok Komparator nudi više sekvenci sortiranja.
  • Usporedivo utječe na izvornu klasu, dok usporednik ne utječe na izvornu klasu.

Metoda upotrijebljena u Usporedbi:

Slijedi važna metoda korištena u usporedivom sučelju:

CompareTo ():

Metoda CompareTo () koristi se za izvođenje prirodnog sortiranja niza. Značenje prirodnog sortiranja je redoslijed sortiranja koji se primjenjuje na objekt, npr. Numerički redoslijed za sortiranje cijelih brojeva, abecedni redoslijed za niz itd.

Sintaksa metode CompareTo () je sljedeća:

int compareTo(T obj)

U gornjoj sintaksi T označava vrstu objekata koje ćete uspoređivati.

Metoda CompareTo () uspoređuje objekt s T obj.

Izlaz:

  • Vraća 0 ako su vrijednosti jednake.
  • U slučaju, ako objekt ima manju vrijednost, tada ova metoda vraća negativnu vrijednost.
  • Ako objekt ima veću vrijednost, vraća pozitivnu vrijednost.

Primjer metode CompareTo ():

Sljedeći primjer Java usporedivog primjera prikazuje usporedbu dva znaka, "a" i "b". Znak "a" dolazi ispred "b" po abecedi.

Stoga je izlaz -1. Znak "b" dolazi iza "a" po abecedi. Stoga je izlaz 1. Znak "a" i "b" jednaki su. Stoga je izlaz 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"));}}

Izlaz

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

Metoda korištena u usporedbi:

Slijede važne metode korištene u sučelju usporedbe:

Usporedi ():

Compare () omogućuje vam naručivanje objekata. Da biste to učinili, morate stvoriti klasu koja implementira sučelje usporedbe. Nakon toga trebate poništiti metodu uspoređivanja.

Sintaksa metode compare () je sljedeća:

compare(Object obj1, Object obj2)

U gornjoj sintaksi, obj1 i obj2 su dva objekta koja morate usporediti metodom compare ().

Izlaz:

  • Vraća negativan cijeli broj ako je prvi argument manji od drugog.
  • Vraća nulu ako su prvi i drugi argument jednaki.
  • Ova metoda može vratiti pozitivan cijeli broj, u slučaju da je prvi argument veći od drugog.

Morate osigurati da je veza prijelazna. Na primjer, ((usporedi (a, b)> 0) && (usporedi (b, c)> 0)) što podrazumijeva usporedbu (a, c)> 0.

Primjer metode usporedbe:

U donjem primjeru programa za usporedbu Java postoji 6 varijabli. "x", "y", "p", "q", "r" i "s". Izlaz je -1 kao vrijednost "x", 20 je manja od vrijednosti "y", 30. Izlaz je 0 jer je vrijednost "p", 40 jednaka vrijednosti "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));}}

Izlaz:

-101

Jednako ():

Equals () provjerava je li objekt s brojem jednak objektu koji se prosljeđuje kao argument ili ne.

Sintaksa metode equals () je sljedeća:

javna logička vrijednost jednako (objekt o)

Ova metoda uzima dva parametra 1) bilo koji objekt 2) povratnu vrijednost. Vraća true ako proslijeđeni argument nije null i ako je objekt sličnog tipa koji ima istu numeričku vrijednost.

Primjer metode Jednako:

U donjem primjeru uspoređujemo četiri varijable međusobno. Tri su varijable cjelobrojnog tipa, a jedna kratkog tipa. Prvi je rezultat netačan jer vrijednost p, koja je 5, nije jednaka vrijednosti q, koja je 20.

Drugi je rezultat istinit jer je vrijednost varijable p i r ista, što je 5. Napokon, izlaz je netačan, jer varijable p i s imaju različite dodijeljene vrijednosti.

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

Izlaz

falsetruefalse

Razlika između usporedivog i uspoređivača u Javi

Razlika između usporedivog i uspoređivača u Javi

Evo glavnih razlika između Java Comparable i Comparator:

Usporedive Usporednik
Usporedivo nudi metodu compareTo () za sortiranje elemenata u Javi. Usporednik pruža metodu compare () za sortiranje elemenata u Javi.
Usporedivo sučelje prisutno je u paketu java.lang. Sučelje za usporedbu prisutno je u paketu java.util.
Logika sortiranja mora biti u istoj klasi čiji ćete objekt sortirati. Logika sortiranja trebala bi biti u zasebnoj klasi za pisanje različitog sortiranja na temelju različitih atributa objekata.
Klasa čije objekte želite sortirati mora implementirati usporedivo sučelje. Klasa, čije objekte želite razvrstati, ne treba implementirati sučelje usporedbe.
Pruža pojedinačne sekvence sortiranja. Pruža više sljedova za sortiranje.
Ova metoda može sortirati podatke prema prirodnom redoslijedu sortiranja. Ova metoda sortira podatke prema prilagođenom redoslijedu sortiranja.
Utječe na izvornu klasu. tj. stvarna klasa je promijenjena. To ne utječe na izvornu klasu, tj. Stvarna klasa nije promijenjena.
Često ga implementiraju u API : Kalendar, klase omotača, datum i niz. Primjenjuje se na sortiranje instanci klasa trećih strana.
Sve klase omotača i klasa String implementiraju usporedivo sučelje. Jedine implementirane klase Comparatora su Collator i RuleBasedColator.

Najbolji postupci tijekom korištenja usporednika i usporedivog u Javi

  • Koristite usporedivo sučelje kada je usporedba standardna za određenu klasu.
  • Lambde možete koristiti s usporednikom.
  • Mnoge osnovne klase dostupne u implementiraju usporedivo sučelje.
  • Moguće je koristiti TreeSet i TreeMap ili prilikom sortiranja Set ili Map.
  • Metoda compareTo () radi s usporednikom, kao i usporediva.
  • Koristite sučelje usporedbe samo kada
  • Metoda compareTo () vratit će pozitivan cijeli broj ako je prvi objekt veći od drugog, negativan ako je niži i nula ako su oba ista.