Što je sučelje usporedbe u Javi s primjerima?
Sučelje Comparator sadrži metode compare() i equals(). Prva metoda se koristi za izračunavanje dva objekta vraćanjem vrijednosti cijelog broja. Druga se metoda koristi za izračunavanje dvaju usporednih objekata za jednakost.
Evo različitih primjera kako koristiti sučelje Comparator u Javi:
Primjer 1: Sortiraj popis na temelju duljine
U ovom primjeru razmatra se popis nizova i sortira ih na temelju njihove duljine umjesto abecednog reda:
uvoz java.util.ArrayList ;
uvoz java.util.Zbirke ;
uvoz java.util.Usporednik ;
uvoz java.util.List ;
javnost razreda Glavni {
javnost statički poništiti glavni ( Niz [ ] args ) {
Popis < Niz > popis = novi ArrayList <> ( ) ;
popis. dodati ( 'Ivan' ) ;
popis. dodati ( 'Bob' ) ;
popis. dodati ( 'Alice' ) ;
Zbirke . vrsta ( popis ) ;
Sustav . van . println ( popis ) ;
Zbirke . vrsta ( popis, novi Usporednik dužine niza ( ) ) ;
Sustav . van . println ( popis ) ;
}
} // Klasa je definirana
razreda Usporednik dužine niza oruđa Usporednik < Niz > {
javnost int usporediti ( Niz s1, Niz s2 ) {
povratak Cijeli broj . usporediti ( s1. duljina ( ) , s2. duljina ( ) ) ;
}
}
Opis gornjeg koda dat je u nastavku:
- Prvo stvorite prilagođenu klasu Comparator pod nazivom StringLengthComparator koja implementira sučelje Comparator
. - Ona nadjačava metodu compare() za usporedbu duljine dva niza.
- Na kraju, proslijedite instancu metodi the.sort() za sortiranje popisa pomoću našeg prilagođenog usporednika.
Izlaz
Prvi izlaz rezultat je sortiranja popisa pomoću prirodnog redoslijeda, dok je drugi izlaz rezultat sortiranja popisa pomoću našeg prilagođenog komparatora na temelju duljine svakog niza.
Primjer 2: Sortiranje objekata na temelju određenog polja
Drugi primjer provodi se za sortiranje objekata na temelju određenog polja. Za ovo se koristi sučelje Comparator:
uvoz java.util.ArrayList ;uvoz java.util.Zbirke ;
uvoz java.util.Usporednik ;
uvoz java.util.List ;
javnost razreda Glavni {
javnost statički poništiti glavni ( Niz [ ] args ) {
Popis < Osoba > osobe = novi ArrayList <> ( ) ; // Dodijelite ime, dob i plaće
osobe. dodati ( novi Osoba ( 'Alice' , 25 , 50000 ) ) ;
osobe. dodati ( novi Osoba ( 'Bob' , 30 , 75000 ) ) ;
osobe. dodati ( novi Osoba ( 'Charlie' , dvadeset , 40000 ) ) ;
Usporednik < Osoba > usporednik plaća = novi Usporednik < Osoba > ( ) {
// Poredaj osobe na temelju plaće
javnost int usporediti ( Osoba p1, osoba p2 ) {
povratak Cijeli broj . usporediti ( p2. getSalary ( ) , p1. getSalary ( ) ) ;
}
} ;
Zbirke . vrsta ( osobe, plaća Usporednik ) ; povratak sortirati vrijednosti
// Ispis sortiranog popisa osoba
za ( Osoba osoba : osobe ) {
Sustav . van . println ( osoba ) ;
}
}
}
razreda Osoba { // Definirajte ime, dob i plaću
privatna Niz Ime ; // opseg unutar klase
privatna int dob ;
privatna int plaća ;
javnost Osoba ( Niz Ime, int dob, int plaća ) {
ovaj . Ime = Ime ;
ovaj . dob = dob ;
ovaj . plaća = plaća ;
}
javnost Niz getName ( ) {
povratak Ime ;
}
javnost int getAge ( ) {
povratak dob ;
}
javnost int getSalary ( ) {
povratak plaća ;
}
javnost Niz toString ( ) {
povratak Ime + ' (dob ' + dob + ', plaća $' + plaća + ')' ;
}
}
Opis koda je dolje:
- Klasa pod nazivom ' Osoba ” sa tri polja: “ Ime ”, “ dob ', i ' plaća ' Smatra.
- Nakon toga sortirajte kolekciju objekata Osobe ovisno o njihovoj plaći silaznim redoslijedom.
Izlaz
Izlaz pokazuje da su plaće poredane prema silaznom redoslijedu.
Zaključak
U Javi, sučelje Comparator moćan je alat koji korisnicima omogućuje sortiranje objekata na temelju prilagođenih kriterija. Ona nadjačava metodu compare(), korisnici mogu definirati vlastitu funkciju usporedbe i koristiti je za sortiranje kolekcija objekata na razne načine. Ovaj članak objašnjava sučelje Comparator-a zajedno s praktičnim primjerima u Javi.