Az összehasonlítható és komparátor mindkettő a Java általános interfészei, amelyeket az objektumok adatelemeinek összehasonlítására használnak. Az összehasonlítható interfész a java.lang csomagban található, a Comparator felület pedig a java.util csomagban található. Az összehasonlítható és komparátor interfészek közötti különbség az, hogy az összehasonlítható interfész biztosítja az egyetlen rendezési szekvenciát, míg a Comparator interfész biztosítja a többszörös válogató szekvenciákat. A Comparable és Comparator interfész között vannak más különbségek is, amelyeket az összehasonlító táblázatban fogunk tanulmányozni.
Összehasonlító táblázat
Az összehasonlítás alapja | Hasonló | összehasonlító |
---|---|---|
Alapvető | Az összehasonlítható interfész csak egyetlen rendezési sorozatot tesz lehetővé. | A Comparator interfész lehetővé teszi több rendezési szekvenciát. |
csomagok | Az összehasonlítható felület a java.lang csomagban található. | A komparátor interfész a java.util csomagban található. |
Mód | Az összehasonlítható felület csak egyetlen módszert tartalmaz nyilvános int CompareTo (Object obj); | A Comparator felület két módszert tartalmaz nyilvános int összehasonlítás (Object obj1, Object obj2) boolean egyenlő (Object obj) |
Végrehajtás | Az összehasonlítható felületet az az osztály végzi, amelynek objektumait összehasonlítani kell. | A komparátor interfészt inkább egy osztályozott osztály hajtja végre az osztályba, amelynek objektumai összehasonlíthatók. |
Összehasonlítás | Az CompareTo (Object obj) módszer összehasonlítja azt az objektumot, amelyet a módszer meghívására használunk a megadott objektumhoz. | Az összehasonlítás (Object obj1, Object obj2) módszer összehasonlítja mind a megadott objektumot, hogy átadja a módszert. |
List / Array | Ha az Összehasonlítható típus objektumának listáját össze kell hasonlítani, akkor a Gyűjtemény osztály egy módszert, azaz a Gyűjtemények sorozatot (List lst) adja meg. | Ha összehasonlítható típusú objektumok listáját össze kell hasonlítani, akkor a Gyűjtemény osztály egy módszert, azaz Collections.sort (lista, összehasonlító). |
Összehasonlítható definíció
Az összehasonlítható egy olyan felület, amely elérhető a java.lang csomagban. Az osztály végrehajtja a Comparator felületet, hogy rendezze a tárgyat természetes sorrendben. Az objektumok természetes sorrendben vannak rendezve, ami azt jelenti, hogy az objektumokat ASCII értékükkel hasonlítják össze. Az összehasonlítható felületet megvalósító osztályok: bájt, karakter, kettős, úszó, hosszú, rövid, sztring és integer osztályok. Még a Dátum és a Calander osztály is alkalmazza az összehasonlítható felületet.
Az Összehasonlítható felület csak egy olyan módszert tartalmaz, amely a CompareTo (Object obj). Ez a módszer összehasonlítja a metódus meghívására használt objektumot a paraméterben megadott objektummal. A módszer szintaxisa a következő:
nyilvános int CompareTo (Object obj);
A CompareTo (Object obj) metódus visszaáll 0-ra, amikor mindkét objektum összehasonlítja az értéket, akkor visszatér -ve érték, ha a hívó objektum kisebb, mint a megadott objektum, és visszaadja a + értéket, ha a meghívó objektum nagyobb A gyűjteményosztály egy sorrendet biztosít a lista elemeinek rendezéséhez. Az Összehasonlítható típus lista (és tömb) elemeit a „Gyűjtemények.lista (Lst lst)” módszerrel rendezheti.
A komparátor meghatározása
A komparátor egy olyan felület, amely elérhető a java.util csomagban. Az interfész Comparator nem kerül végrehajtásra azon osztályon, amelynek objektumait összehasonlítani kell, hanem külön osztályt valósít meg a Comparator interfészt úgy, hogy a rendezési logika az objektum minden egyes adatelemére egy másik osztályban kerül alkalmazásra. Az összehasonlító kétféle módszert tartalmaz:
nyilvános int összehasonlítás (Object obj1, Object obj2) és logikai egyenlő (Object obj)
A fenti összehasonlítás () módszer összehasonlítja az első objektum obj1-et, a második objekt2 objektumot. Az összehasonlítás () metódus 0 visszatér, ha mindkét objektum összehasonlítja az azonos értéket, akkor visszaadja a -ve értéket, ha az objekt1 objektum kisebb, mint az objekt2 objektum, és visszaadja a + ve értéket, ha az objektum objektum értéke nagyobb, mint az objekt1. az objektum objektumhoz. Az egyenlő () módszerek ellenőrzik, hogy a megadott objektum megegyezik-e a hívó objektummal. Az egyenlő () metódus igaz, ha a két összehasonlított objektum egyenlő, és hamis . A gyűjteményosztály a lista és az összehasonlító típus elemeinek rendezésének módját adja meg. Az összehasonlító típusok listájának elemeit a Collections.sort (List, Comparator) módszerrel rendezi.
Az összehasonlítható és összehasonlító legfontosabb különbségek
- Az összehasonlítható interfész lehetővé teszi, hogy egyetlen válogatási sorrendet használjunk, ami azt jelenti, hogy az objektum egyetlen adatelemét összehasonlíthatja az összehasonlító () módszerrel, másrészt a Comparator felület lehetővé teszi, hogy több rendezési szekvenciát hasonlítson össze az objektum több adatelemének összehasonlításával.
- Az összehasonlítható felületet az az osztály végzi, amelynek objektumait összehasonlítani kell, mivel a rendezési logika ugyanazon az osztályon belül van meghatározva. Másrészt a Comparator interfészt nem valósítja meg az az osztály, amelynek objektumait össze kell hasonlítani, mivel a rendezési logikát a külön osztályok határozzák meg, ahol minden osztály meghatározza az objektum egyetlen adatelemének rendezését, és ezek a meghatározó osztályok végrehajtják a Comparator felületet .
- Az összehasonlítható felület a java.lang csomagban található, míg a Comparator felület a java.util csomagban található.
- Az Összehasonlítható interfész csak egy módszert ismertet, amely hasonlít össze (Objektum objektum), míg a Comparator felület két módszert jelez ki, hasonlítsa össze (Object obj1, Object obj2) és egyenlő (Object obj).
- Az Összehasonlítható összehasonlító (Object obj) módszer összehasonlítja az objektumot meghívó metódust a megadott objektummal, míg a Comparator összehasonlítása (Object obj1, Object obj2) módszere összehasonlítja az objektum objektum objektumát objektummal2, amelyeket a módszerhez továbbítanak.
- A Gyűjtemények osztály a „Gyűjtemények sorba rendezése” (Sort.sort (List lst)) rendezési módot nyújt az Összehasonlítható típus objektumok rendezéséhez. A Gyűjtemények osztályban a Gyűjtemények sorrendje (Összeadás, Lista, Összehasonlítás) a Comparator típus objektumai rendezésére szolgál.
Következtetés:
Ha az objektumokat a természetes megrendelésben szeretné rendezni, akkor az összehasonlítható felületet használhatja, amellyel az objektumokat bármilyen attribútum alapján rendezheti, majd a Comparator felületet használja.