Különbség a Comparable és a Comparator között a Java-ban

Tartalomjegyzék:

Anonim

Mi hasonlítható össze a Java-ban?

A Java-ban összehasonlítható egy olyan objektum, amely összehasonlítja önmagát egy másik objektummal. Segít az egyedi objektumok listájának rendezésében. A java.lang.Comparable interfészt egy osztálynak kell megvalósítania annak példányainak összehasonlítása érdekében. Az összehasonlítható felületet megvalósító objektumok tömbjét az Arrays.sort és a Collections.sort módszerek rendezik automatikusan.

Ebben a Comparator vs Comparable in Java oktatóanyagban megtudhatja:

  • Mi hasonlítható össze a Java-ban?
  • Mi az a Comparator a Java-ban?
  • Az összehasonlítható módszerben alkalmazott módszer:
  • A Comparatorban alkalmazott módszer:
  • Különbség a Comparable vs Comparator között a Java-ban
  • A Comparator és az Comparable Java használatának bevált módszerei

Mi az a Comparator a Java-ban?

A Java összehasonlító egy olyan objektum, amely különböző osztályok különböző objektumait hasonlítja össze. A Java összehasonlító felületét a felhasználó által definiált osztályok objektumainak rendezésére is használják. Két fontos összehasonlító interfész-módszert foglal magában, amelyeket összehasonlításnak (Object obj1, Object obj2) és egyenlőnek (Object element) neveznek.

Főbb különbségek:

  • Az Comparable összehasonlító () módszert kínál az elemek rendezéséhez a Java-ban, míg a Comparator összehasonlító () módszert kínál az elemek rendezéséhez a Java-ban.
  • Az összehasonlítható interfész a java.lang csomagban, míg a Comparator interfész a java.util csomagban van.
  • A Comparable egyetlen rendezési szekvenciát, míg a Comparator több rendezési szekvenciát biztosít.
  • Az összehasonlítható hatással van az eredeti osztályra, míg az összehasonlító az eredeti osztályra.

Az összehasonlítható módszerben alkalmazott módszer:

Az alábbiakban bemutatjuk az összehasonlítható felület egyik fontos módszerét:

Összehasonlítani():

A CompareTo () metódust használjuk a karakterlánc természetes rendezéséhez. A természetes rendezés jelentése az objektumra érvényes rendezési sorrend, pl. Numerikus sorrend egész számok rendezéséhez, ábécé sorrend a Stringhez stb.

A CompareTo () módszer szintaxisa a következő:

int compareTo(T obj)

A fenti szintaxisban T jelzi az összehasonlítani kívánt objektumok típusát.

A CompareTo () metódus összehasonlítja az objektumot T obj-kel.

Kimenet:

  • 0 értéket ad vissza, ha az értékek megegyeznek.
  • Abban az esetben, ha az objektumnak kisebb az értéke, akkor ez a módszer negatív értéket ad vissza.
  • Ha az objektumnak magasabb az értéke, akkor pozitív értéket ad vissza.

CompareTo () metódus példa:

A következő Java összehasonlító példa két karakter, az "a" és "b" összehasonlítását mutatja be. Az "a" karakter ábécé sorrendben szerepel a "b" előtt.

Ezért a kimenet -1. A "b" karakter ábécérendben következik az "a" után. Ezért a kimenet 1. Az "a" és "b" karakter ekvivalens. Ezért a kimenet 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"));}}

Kimenet

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

A Comparatorban alkalmazott módszer:

Az alábbiakban bemutatjuk az összehasonlító felületen alkalmazott fontos módszereket:

Összehasonlítás ():

A Compare () segítségével objektumokat rendelhet. Ehhez létre kell hozni egy osztályt, amely megvalósítja az összehasonlító felületet. Ezek után felül kell írnia az összehasonlítás módszerét.

Az Compare () módszer szintaxisa a következő:

compare(Object obj1, Object obj2)

A fenti szintaxisban az obj1 és az obj2 két objektum, amelyeket össze kell hasonlítania az összehasonlítás () módszerrel.

Kimenet:

  • Negatív egész számot ad vissza, ha az első argumentum kisebb, mint a második.
  • Nullát ad vissza, ha az első és a második argumentum egyenlő.
  • Ez a módszer pozitív egész számot adhat vissza, ha az első argumentum nagyobb, mint a második.

Biztosítania kell, hogy a kapcsolat transzitív legyen. Például (((összehasonlítsuk (a, b)> 0) && (hasonlítsuk össze (b, c)> 0)), ami implikálja az összehasonlítást (a, c)> 0.

A módszer példájának összehasonlítása:

A Java összehasonlító példa alábbi programjában 6 változó található. "x", "y", "p", "q", "r" és "s". A kimenet -1, mivel az "x" értéke 20, a 20 kisebb, mint az "y", 30 értéke. A kimenet 0, mert a "p", 40 értéke megegyezik a "q", 40 értékével .

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

Kimenet:

-101

Egyenlő ():

Az Equals () ellenőrzi, hogy a számobjektum megegyezik-e az objektummal, amelyet argumentumként adnak át, vagy sem.

Az equals () módszer szintaxisa a következő:

nyilvános logikai egyenlő (o objektum)

Ez a módszer két paramétert vesz fel: 1) bármely objektumot 2) visszatérési értéket. Ha az átadott argumentum nem nulla, és hasonló típusú objektum, azonos numerikus értékkel tér vissza.

Egyenlő módszer példa:

Az alábbi példában összehasonlítjuk a négy változót egymással. Három változó típusa egész, egy pedig rövid. Az első eredmény hamis, mivel a p értéke, amely 5, nem egyenlő a q értékével, amely 20.

A második eredmény igaz, mert a p és r változó értéke megegyezik, ami 5. Végül a kimenet hamis, mivel a p és s változónak különböző hozzárendelt értéke van.

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

Kimenet

falsetruefalse

Különbség a Comparable vs Comparator között a Java-ban

Különbség a Comparable vs Comparator között a Java-ban

Itt találhatók a fő különbségek a Java Comparable és a Comparator között:

Hasonló Összehasonlító
Az Comparable összehasonlító () módszert kínál az elemek rendezéséhez a Java-ban. A Comparator összehasonlító () metódust biztosít az elemek rendezéséhez a Java-ban.
Összehasonlítható felület található a java.lang csomagban. Az összehasonlító interfész a java.util csomagban található.
A rendezés logikájának ugyanabban az osztályban kell lennie, amelynek objektumát rendezni fogja. A rendezés logikájának külön osztályban kell lennie, hogy az objektumok különböző attribútumai alapján különböző rendezést írhasson.
Az osztálynak, amelynek objektumait rendezni kívánja, hasonló interfészt kell megvalósítania. Az osztálynak, amelynek objektumait rendezni szeretné, nem kell összehasonlító felületet megvalósítania.
Egyetlen rendezési szekvenciát biztosít. Több rendezési szekvenciát biztosít.
Ez a módszer az adatokat a természetes rendezési sorrend szerint rendezheti. Ez a módszer az adatokat a testreszabott rendezési sorrend szerint rendezi.
Hatással van az eredeti osztályra. azaz a tényleges osztály megváltozik. Ez nem befolyásolja az eredeti osztályt, vagyis a tényleges osztály nem változik.
Gyakran implementálja az API- ban: Naptár, Wrapper osztályok, Dátum és String. Harmadik fél osztályainak példányainak rendezésére szolgál.
Minden burkoló osztály és a String osztály összehasonlítható felületet valósít meg. Az összehasonlító egyetlen osztálya a Collator és a RuleBasedColator.

A Comparator és az Comparable Java használatának bevált módszerei

  • Használjon összehasonlítható felületet, ha az összehasonlítás szabványos az adott osztályban.
  • Használhat lambdas-t komparátorral.
  • Számos alapvető osztály elérhető összehasonlítható interfészt.
  • Lehetőség van a TreeSet és a TreeMap használatára, illetve a Set vagy Map rendezése közben.
  • Az CompareTo () módszer komparátorral és összehasonlíthatóan is működik.
  • Csak akkor használja az összehasonlító felületet, ha
  • A CompareTo () metódus pozitív egész számot ad vissza, ha az első objektum nagyobb, mint a másik, negatív, ha alacsonyabb, és nulla, ha mindkettő ugyanaz.