Comparable i comparator su sučelja Jave, programskog jezika visoke razine koji se koristi za sortiranje elemenata zbirke. Java u osnovi pruža ova dva različita sučelja za sortiranje objekata.
Postoje mnoge značajne razlike između oba sučelja koje stvaraju liniju između njih na temelju funkcije koju obavljaju.
Ključni za poneti
- Comparable je sučelje za prirodni poredak objekata; Comparator je vanjski uslužni program za usporedbu objekata.
- Implementacija Comparable zahtijeva modificiranje klase objekata koji se uspoređuju; a Comparator se može koristiti bez modificiranja izvorne klase.
- Comparable nameće jednu, zadanu metodu sortiranja; Comparator omogućuje višestruke, prilagodljive opcije sortiranja.
Usporedivo protiv usporednog
Comparable je sučelje u Javi koje definira metodu compareTo i koristi se za usporedbu prirodno poredanih objekata. Uspoređuje objekte pomoću reference "ovo". Sučelje usporedbe razvrstava objekte uzimajući u obzir njihove atribute. Razmatra objekte dviju različitih klasa.
Comparable je sučelje koje je prisutno u lang paketu jezika Java, a svrha mu je razvrstavanje elemenata kolekcije koristeći samo jedan atribut kao što su starost, cijena, id, ime itd.
Sposoban je usporediti sebe s bilo kojim drugim predmetom. Objekt bilo koje vrste, bio to popis ili niz, može se sortirati.
Comparator je sučelje koje je prisutno u util paketu jezika Java, a svrha mu je sortiranje elemenata zbirke koristeći više atributa odjednom.
To je zasebna klasa i izvan je vrste elementa koji se uspoređuje. Klasa zbirki pruža drugu metodu sortiranja koja prihvaća komparator kao parametar.
Tabela za usporedbu
Parametri usporedbe | Usporedive | Usporednik |
---|---|---|
Vrsta sortiranja | Omogućuje jedan redoslijed sortiranja. | Omogućuje više sekvenci sortiranja. |
Modifikacija klase | Modificira stvarnu klasu. | Ne mijenja stvarnu klasu. |
Lokacija paketa | Prisutan je u paketu java—lang. | Prisutan je u Javi. pomoćni paket. |
Metode | Ima metodu compareTo(). | Ima metodu compare(). |
Metode sortiranja | Metoda Collections.sort(List). | Metoda Collections.sort(List,Comparator). |
Što je usporedivo?
Kao što je gore objašnjeno, comparable je sučelje programskog jezika Java koje je prisutno u paketu lang i koristi se za sortiranje elemenata zbirke korištenjem samo jednog atributa. Usporedivo sučelje sadrži samo jednu metodu koja je compareTo().
Usporedivi objekt može se uspoređivati s drugim objektima. Da bi klasa mogla usporediti instance, potrebno je da klasa implementira sučelje Comparable.
Usporedivo sučelje razvijeno je za objekte s prirodnim redoslijedom. Drugim riječima, to znači da objekt koji se sortira mora imati redoslijed kojim se sortira.
U logičkom smislu, usporedivo sučelje uspoređuje "ovu" referencu s objektom koji se spominje u metodi. Kada bilo koja klasa implementira sučelje Comparable, objekt te klase može se sortirati pomoću kolekcija. sort() ili Nizovi. metoda sort().
Objekti će automatski biti poredani prirodnim redoslijedom koji je definiran metodom CompareTo. Mogu se usporediti brojevi, nizovi i mnoge druge vrste. Nizovi se mogu usporediti korištenjem abecedne usporedbe.
Različite ugrađene klase Jave implementiraju usporedivo sučelje. Najvažnija stvar koju treba imati na umu je da se usporedivo sučelje može koristiti samo za usporedbu objekata iste klase.
Što je Comparator?
Sučelje za usporedbu programskog jezika Java prisutno je u paketu util i koristi se za sortiranje zbirke na temelju više atributa odjednom.
Komparator je potpuno zasebna klasa. Programeri koriste za stvaranje više klasa koje implementiraju sučelje komparatora u svrhu usporedbe različitih objekata.
Za usporedbu bilo kojeg objekta zbirke, prvi korak je stvaranje klase koja implementira metodu usporedbe, koja u sebi ima metodu compare(). Sljedeći korak je napraviti instancu te klase koja implementira sučelje komparatora.
Posljednji korak je pozivanje preopterećene metode, koja je metoda sort(), a zatim dodjeljivanje popisa i instance klase koja je stvorena u prethodnom koraku.
Sučelje komparatora uspoređuje dva objekta različitih klasa. Sučelje Comparator ima dvije metode u sebi, a to su metoda compare() i metoda equals().
Metoda compare() uzima dva različita objekta kao svoj parametar za usporedbu, a metoda equals() određuje je li objekt prošlo jednako je pozivajućem komparatoru.
Metoda equals() vraća Booleovu vrijednost kao izlaz. True se vraća kada objekt prođe, a pozivajući objekt su oba komparatora, a ako ne, onda se vraća false.
Metoda compare() vraća vrijednost cijelog broja u svom izlazu, označavajući veći između dva proslijeđena objekta.
Glavne razlike između usporedivog i usporednog
- Sučelje Comparable pruža jedno sortiranje slijed u kojem se kolekcija može sortirati kroz jedan element kao što je ID, naziv ili bilo koji specifični parametar, dok sučelje usporedbe pruža višestruki niz sortiranja u kojem se kolekcija može sortirati kroz više elemenata kao što su ID, naziv ili bilo koji drugi parametar .
- Usporedivo sučelje utječe na izvornu klasu jer modificira stvarnu klasu, dok, s druge strane, sučelje komparatora ni na koji način ne utječe na izvornu klasu, budući da stvarna klasa ostaje ista bez ikakvih izmjena.
- Usporedivo sučelje prisutno je u lang paketu Jave, dok je usporedno sučelje prisutno u util paketu Jave.
- U usporedivom sučelju metoda compareTo() se koristi za sortiranje elemenata, dok se u komparatorskom sučelju metoda compare() koristi za sortiranje elemenata.
- Elementi popisa usporedivih tipova zbirke mogu se sortirati pomoću Zbirki. Metoda Sortiraj (List), dok se s druge strane elementi popisa tipa komparatora mogu sortirati korištenjem Zbirki. Metoda sortiranja (List, Comparator).
- https://dom-pubs.onlinelibrary.wiley.com/doi/abs/10.1111/j.1463-1326.2011.01545.x
- https://journals.asm.org/doi/abs/10.1128/aac.47.6.1824-1831.2003
- https://ieeexplore.ieee.org/abstract/document/6042862/
Zadnje ažuriranje: 17. srpnja 2023
Sandeep Bhandari ima diplomu inženjera računala na Sveučilištu Thapar (2006.). Ima 20 godina iskustva u području tehnologije. Ima veliki interes za razna tehnička područja, uključujući sustave baza podataka, računalne mreže i programiranje. Više o njemu možete pročitati na njegovom bio stranica.
Ključne razlike koje ste istaknuli između sučelja Comparable i Comparator vrlo su informativne i korisne u razumijevanju razlika između ta dva. Posebno je prosvjetljujuće vaše objašnjenje kako sučelje Comparable automatski sortira objekte u prirodnom redoslijedu definiranom metodom compareTo.
Hvala što ste detaljno opisali logiku iza sučelja Comparable i Comparator. Ove informacije sigurno će pomoći u učinkovitijoj implementaciji mehanizama sortiranja.
Slažem se, članak pruža jasnu i konciznu usporedbu sučelja Comparable i Comparator, što olakšava razumijevanje njihovih jedinstvenih funkcija i slučajeva upotrebe.
Raščlamba sučelja Comparable i Comparator i njihovih posebnih značajki vrlo je poučna. Vaše sveobuhvatno objašnjenje svrhe i upotrebe ovih sučelja nedvojbeno će pomoći programerima u donošenju informiranih odluka o dizajnu.
Cijenim ovdje prikazanu detaljnu usporedbu. To je vrijedna informacija za programere koji žele poboljšati svoje razumijevanje tehnika sortiranja i usporedbe u Javi.