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.