Čo je rozhranie komparátora v jazyku Java s príkladmi?
Rozhranie Comparator obsahuje metódy Compare() a equals(). Prvá metóda sa používa na výpočet dvoch objektov vrátením celočíselnej hodnoty. Druhá metóda sa používa na výpočet dvoch porovnávacích objektov pre rovnosť.
Tu sú rôzne príklady použitia rozhrania komparátora v jazyku Java:
Príklad 1: Zoraďte zoznam podľa dĺžky
V tomto príklade sa berie do úvahy zoznam reťazcov a triedi sa podľa ich dĺžky namiesto abecedného poradia:
importovať java.util.ArrayList ;
importovať java.util.Collections ;
importovať java.util.Comparator ;
importovať java.util.List ;
verejnosti trieda Hlavná {
verejnosti statické neplatné Hlavná ( Reťazec [ ] args ) {
Zoznam < Reťazec > zoznam = Nový ArrayList <> ( ) ;
zoznam. pridať ( 'John' ) ;
zoznam. pridať ( 'Bob' ) ;
zoznam. pridať ( 'Alice' ) ;
zbierky . triediť ( zoznam ) ;
Systém . von . println ( zoznam ) ;
zbierky . triediť ( zoznam, Nový StringLengthComparator ( ) ) ;
Systém . von . println ( zoznam ) ;
}
} // Trieda je definovaná
trieda StringLengthComparator náradia Porovnávač < Reťazec > {
verejnosti int porovnať ( Reťazec s1, Reťazec s2 ) {
vrátiť Celé číslo . porovnať ( s1. dĺžka ( ) , s2. dĺžka ( ) ) ;
}
}
Popis vyššie uvedeného kódu je uvedený nižšie:
- Najprv vytvorte vlastnú triedu Comparator s názvom StringLengthComparator, ktorá implementuje rozhranie Comparator
. - Nahrádza metódu Compare() na porovnávanie dĺžky dvoch reťazcov.
- Nakoniec odovzdajte inštanciu metóde.sort() na triedenie zoznamu pomocou nášho vlastného porovnávača.
Výkon
Prvý výstup je výsledkom triedenia zoznamu pomocou prirodzeného usporiadania, zatiaľ čo druhý výstup je výsledkom triedenia zoznamu pomocou nášho vlastného porovnávača na základe dĺžky každého reťazca.
Príklad 2: Triedenie objektov na základe špecifického poľa
Ďalším príkladom je triedenie objektov na základe špecifického poľa. Na dosiahnutie tohto cieľa sa používa rozhranie komparátora:
importovať java.util.ArrayList ;importovať java.util.Collections ;
importovať java.util.Comparator ;
importovať java.util.List ;
verejnosti trieda Hlavná {
verejnosti statické neplatné Hlavná ( Reťazec [ ] args ) {
Zoznam < Osoba > osôb = Nový ArrayList <> ( ) ; // Priraďte meno, vek a platy
osôb. pridať ( Nový Osoba ( 'Alice' , 25 , 50 000 ) ) ;
osôb. pridať ( Nový Osoba ( 'Bob' , 30 , 75 000 ) ) ;
osôb. pridať ( Nový Osoba ( 'Charlie' , dvadsať , 40 000 ) ) ;
Porovnávač < Osoba > mzdový porovnávač = Nový Porovnávač < Osoba > ( ) {
// Zoraďte osoby podľa platu
verejnosti int porovnať ( Osoba p1, Osoba p2 ) {
vrátiť Celé číslo . porovnať ( p2. získať plat ( ) , p1. získať plat ( ) ) ;
}
} ;
zbierky . triediť ( osôb, platPorovnávač ) ; vrátiť triediť hodnoty
// Vytlačí zoradený zoznam osôb
pre ( Osoba osoba : osôb ) {
Systém . von . println ( osoba ) ;
}
}
}
trieda Osoba { // Definujte meno, vek a plat
súkromné Reťazec názov ; // rozsah v rámci triedy
súkromné int Vek ;
súkromné int plat ;
verejnosti Osoba ( Reťazec názov, int Vek, int plat ) {
toto . názov = názov ;
toto . Vek = Vek ;
toto . plat = plat ;
}
verejnosti Reťazec getName ( ) {
vrátiť názov ;
}
verejnosti int getAge ( ) {
vrátiť Vek ;
}
verejnosti int získať plat ( ) {
vrátiť plat ;
}
verejnosti Reťazec natiahnuť ( ) {
vrátiť názov + ' (Vek ' + Vek + ', plat $' + plat + ')' ;
}
}
Popis kódu je uvedený nižšie:
- Trieda s názvom „ Osoba “ s tromi poliami: “ názov “, “ Vek “ a „ plat ' je považovaný.
- Potom zoraďte zbierku objektov osôb v zostupnom poradí podľa ich platu.
Výkon
Výstup ukazuje, že platy boli zoradené zostupne.
Záver
V jazyku Java je rozhranie Comparator výkonným nástrojom, ktorý umožňuje používateľom triediť objekty na základe vlastných kritérií. Nahrádza metódu Compare(), používatelia môžu definovať svoju vlastnú porovnávaciu funkciu a použiť ju na triedenie kolekcií objektov rôznymi spôsobmi. Tento článok vysvetľuje rozhranie porovnávača spolu s praktickými príkladmi v jazyku Java.