Comparable vs Comparator in Java
Főbb különbség az összehasonlítható és az összehasonlító között Java
- Összehasonlítható Java egy objektum, amellyel összehasonlíthatja magát egy másik objektummal, míg a Comparator egy olyan objektum, amely különböző osztályokba tartozó objektumokat hasonlít össze.
- Összehasonlítható biztosítja a
compareTo()az elemek rendezésének módja Java, míg a Comparator acompare()az elemek rendezésének módja Java. - Hasonló interfész található benne
java.langcsomagban, míg a Comparator interfész benne vanjava.utilcsomag. - A Comparable egyetlen rendezési sorozatot, míg a Comparator több rendezési sorozatot biztosít.
- A Comparator hatással van az eredeti osztályra, míg a Comparator nem az eredeti osztályra.

Itt elemeztem az összehasonlítható és a Comparator közötti különbséget, és átfogóan értékelem azok előnyeit és hátrányait.
Amiben összehasonlítható Java?
Hasonló in Java olyan tárgy, amely összehasonlítja magát egy másik tárggyal. Segít az egyéni objektumok listájának rendezésében. A Java.lang.Az összehasonlítható felületet egy osztálynak kell megvalósítania, hogy összehasonlíthassa példányait. Az összehasonlítható interfészt megvalósító objektumok tömbje automatikusan sorba rendeződik Arrays.sort és a Collections.sort mód.
Az Összehasonlításban használt módszer
Szeretnék kiemelni egy fontos módszert, amelyet gyakran használok a Comparable felületen:
Összehasonlítani():
A CompareTo() metódus természetes rendezést hajt végre egy karakterláncon. A természetes rendezés jelentése az objektumra érvényes rendezési sorrend, pl. az egész számok rendezésének numerikus sorrendje, a String betűrendje stb.
A szintaxisa CompareTo() a módszer a következő:
int compareTo(T obj)
A fenti szintaxisban a T az összehasonlítandó objektumok típusát jelöli.
CompareTo() módszer összehasonlítja az objektumot T obj-val.
output:
- 0-t ad vissza, ha az értékek egyenlőek.
- Ha az objektum értéke alacsonyabb, akkor ez a metódus negatív értéket ad vissza.
- Ha az objektumnak nagyobb az értéke, akkor pozitív értéket ad vissza.
Példa összehasonlításra in Java
A következő program a Java egy összehasonlítható példa két karakter, „a” és „b” összehasonlítását mutatja be. Az „a” karakter ábécé sorrendben „b” elé kerül.
Ezért a kimenet -1. A „b” karakter az „a” után következik ábécé sorrendben. Ezért a kimenet 1. Az „a” és „b” karakterek egyenértékűek. 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"));
}
}
teljesítmény
Compare To 'a' b is : -1 Compare To 'b' a is : 1 Compare To 'b' b is : 0
Miben van összehasonlító Java?
Összehasonlító in Java egy objektum a különböző osztályokhoz tartozó objektumok összehasonlítására. Az összehasonlító interfész be Java a felhasználó által definiált osztályok objektumainak rendezésére is szolgál. Két fontos összehasonlító interfész módszert tartalmaz, amelyek az összehasonlítás (Object obj1, Object obj2) és az egyenlők (Object element) néven ismertek.
A Comparatorban használt módszer
Gyakorlatomban gyakran támaszkodom az összehasonlító felület alábbi kritikus módszereire:
Összehasonlítás():
Compare() lehetővé teszi az objektumok megrendelését. Ehhez létre kell hozni egy osztályt, amely egy összehasonlító felületet valósít meg. Ezt követően felül kell írnia az összehasonlítási módszert.
A szintaxis a compare() a módszer a következő:
compare(Object obj1, Object obj2)
A fenti szintaxisban az obj1 és az obj2 két olyan objektum, amelyeket össze kell hasonlítani az összehasonlítás() metódussal. compare() módszer.
output:
- Negatív egész számot ad vissza, ha az első argumentum kisebb, mint a második.
- Nullát ad vissza, ha az első argumentum é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 tranzitív legyen. Például ((hasonlítsa össze(a, b)>0) && (hasonlítsa össze(b, c)>0)), ami azt jelenti, hogy összehasonlítsa(a, c)>0.
Példa összehasonlításra in Java
Az alábbiakban Java összehasonlító példa, 6 van változók. „x”, „y”, „p”, „q”, „r” és „s”. A kimenet -1, mint az „x” értéke, a 20 kisebb, mint az „y”, 30. A kimenet 0, mert a „p” értéke, 40 egyenlő „q” értékével, 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 zero
System.out.println(Integer.compare(x, y));
int p = 40;
int q = 40;
// as 30 equals 30,
// Output will be zero
System.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 zero
System.out.println(Integer.compare(r, s));
}
}
output:
-1 0 1
Egyenlő():
Equals() ellenőrzi, hogy a számobjektum egyenlő-e az argumentumként átadott objektummal vagy sem.
A szintaxis a equals() a módszer a következő:
public boolean equals(Object o)
Ez a metódus két paramétert igényel: 1) bármely objektumot és 2) egy visszatérési értéket. Igazat ad vissza, ha az átadott argumentum nem null, és egy hasonló típusú objektum, amely azonos numerikus értékkel rendelkezik.
Példa az egyenlő módszerre:
Az alábbi példában a négy változót fogom összehasonlítani egymással. Három változó integer típusú, egy pedig rövid típusú. Az első eredmény hamis, mivel p értéke, amely 5, nem egyenlő 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 az s változók eltérő értékkel rendelkeznek.
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));
}
}
teljesítmény
false true false
Az összehasonlítható és az összehasonlító közötti különbségek Java
Gyakran látom a zavart a kettő között Java Összehasonlítható és összehasonlító; itt van a fő különbség:

| Összehasonlítási alap | Hasonló | Összehasonlító |
|---|---|---|
| Módszer | Összehasonlítható nyújt compareTo() az elemek rendezésének módja Java. |
A Comparator biztosítja compare() az elemek rendezésének módja Java. |
| Csomag | Hasonló interfész található benne java.lang csomag. |
Összehasonlító interfész található benne java.util csomag. |
| A rendezés logikája | A rendezés logikájának ugyanabban az osztályban kell lennie, mint a rendezni kívánt objektumnak. | A rendezés logikájának külön osztályokban kell lennie, hogy különböző rendezéseket írhasson az objektumok különböző attribútumai alapján. |
| Osztály objektum | Annak az osztálynak, amelynek objektumait rendezni szeretné, meg kell valósítania az Összehasonlítható felületet. | Egy osztálynak, amelynek objektumait rendezni szeretné, nem kell összehasonlító felületet megvalósítania. |
| Sorozatok rendezése | Egyetlen rendezési szekvenciát biztosít. | Több rendezési szekvenciát biztosít. |
| Rendezési sorrend | Ezzel a módszerrel a természetes rendezési sorrend szerint rendezhetők az adatok. | Ez a módszer a testreszabott rendezési sorrend szerint rendezi az adatokat. |
| Osztály | Az eredeti osztályt érinti. azaz a tényleges osztály megváltozik. | Nincs hatással az eredeti osztályra, azaz a tényleges osztály nem módosul. |
| Használat | Gyakran implementálva az API-ban a Naptár, a Wrapper osztályok, a dátum és a Húr. |
A harmadik féltől származó osztályok példányainak rendezésére van megvalósítva. |
| végrehajtja | Minden burkoló osztály és karakterlánc osztály hasonló interfészt valósít meg. | A Comparator egyetlen megvalósított osztálya a Collator és a RuleBasedColator. |
Bevált gyakorlatok a Comparator és Comparable in használatához Java
- Használjon összehasonlítható interfészt, ha az összehasonlítás szabványos az adott osztályhoz.
- Használhat lambdákat komparátorral.
- A rendelkezésre álló alapvető osztályok közül sok hasonló interfészt valósít meg.
- Lehetőség van a TreeSet és a TreeMap használatára a halmaz vagy a térkép rendezése közben.
- A
compareTo()módszer komparátorral és összehasonlíthatóval is működik. - Csak akkor használja az összehasonlító felületet, ha < nagyobb rugalmasságra van szüksége.
- A
compareTo()metódus pozitív egész számot ad vissza, ha az első objektum nagyobb, mint a másik, negatívat, ha alacsonyabb, és nullát, ha mindkettő azonos.
Hogyan válasszunk összehasonlítható és összehasonlító elem között
Gyakorlati tapasztalataim végérvényesen azt sugallják, hogy a Comparable és a Comparator kiaknázását Java jelentősen megnöveli az adatrendezés feletti kontrollt, javítva a teljesítményt és a funkcionalitást egyaránt.
