Mikä on Java-vertailuliittymä esimerkkien kanssa?
Comparator-liittymä sisältää vertaa()- ja equals()-menetelmiä. Ensimmäistä menetelmää käytetään kahden objektin laskemiseen palauttamalla kokonaislukuarvo. Toista menetelmää käytetään kahden vertailuobjektin tasa-arvon laskemiseen.
Tässä on erilaisia esimerkkejä Comparator-käyttöliittymän käyttämisestä Javassa:
Esimerkki 1: Lajittele luettelo pituuden perusteella
Tässä esimerkissä tarkastellaan merkkijonoluetteloa ja lajitellaan ne pituuden perusteella aakkosjärjestyksen sijaan:
tuonti java.util.ArrayList ;
tuonti java.util.Collections ;
tuonti java.util.Comparator ;
tuonti java.util.List ;
julkinen luokkaa Main {
julkinen staattinen mitätön pää ( merkkijono [ ] args ) {
Lista < merkkijono > lista = Uusi ArrayList <> ( ) ;
lista. lisätä ( 'John' ) ;
lista. lisätä ( 'Bob' ) ;
lista. lisätä ( 'Liisa' ) ;
Kokoelmat . järjestellä ( lista ) ;
Järjestelmä . ulos . println ( lista ) ;
Kokoelmat . järjestellä ( lista, Uusi StringLengthComparator ( ) ) ;
Järjestelmä . ulos . println ( lista ) ;
}
} // Luokka on määritelty
luokkaa StringLengthComparator toteuttaa Vertailija < merkkijono > {
julkinen int vertailla ( merkkijono s1, merkkijono s2 ) {
palata Kokonaisluku . vertailla ( s1. pituus ( ) , s2. pituus ( ) ) ;
}
}
Yllä olevan koodin kuvaus on alla:
- Luo ensin mukautettu Comparator-luokka nimeltä StringLengthComparator, joka toteuttaa Comparator
-rajapinnan. - Se ohittaa vertailu()-menetelmän kahden merkkijonon pituuden vertailussa.
- Välitä lopuksi ilmentymä .sort()-metodille luettelon lajittelemiseksi mukautetun vertailumme avulla.
Lähtö
Ensimmäinen tulos on tulos lajittelemalla luettelo luonnollisella järjestyksellä, kun taas toinen tulos on tulos lajittelemalla luettelo käyttämällä mukautettua vertailijaamme kunkin merkkijonon pituuden perusteella.
Esimerkki 2: Objektien lajittelu tietyn kentän perusteella
Toinen esimerkki on lajitella esineitä tietyn kentän perusteella. Tämän saavuttamiseksi käytetään Comparator-käyttöliittymää:
tuonti java.util.ArrayList ;tuonti java.util.Collections ;
tuonti java.util.Comparator ;
tuonti java.util.List ;
julkinen luokkaa Main {
julkinen staattinen mitätön pää ( merkkijono [ ] args ) {
Lista < Henkilö > henkilöt = Uusi ArrayList <> ( ) ; // Anna nimi, ikä ja palkat
henkilöt. lisätä ( Uusi Henkilö ( 'Liisa' , 25 , 50 000 ) ) ;
henkilöt. lisätä ( Uusi Henkilö ( 'Bob' , 30 , 75 000 ) ) ;
henkilöt. lisätä ( Uusi Henkilö ( 'Charlie' , kaksikymmentä , 40 000 ) ) ;
Vertailija < Henkilö > palkkaVertailija = Uusi Vertailija < Henkilö > ( ) {
// Lajittele henkilöt palkan perusteella
julkinen int vertailla ( Henkilö p1, henkilö p2 ) {
palata Kokonaisluku . vertailla ( p2. saa palkkaa ( ) , p1. saa palkkaa ( ) ) ;
}
} ;
Kokoelmat . järjestellä ( henkilöt, palkkaVertailija ) ; palata lajitella arvot
// Tulosta lajiteltu henkilöluettelo
varten ( Henkilö henkilö : henkilöt ) {
Järjestelmä . ulos . println ( henkilö ) ;
}
}
}
luokkaa Henkilö { // Määrittele nimi, ikä ja palkka
yksityinen merkkijono nimi ; // laajuus luokassa
yksityinen int ikä ;
yksityinen int palkkaa ;
julkinen Henkilö ( merkkijono nimi, int ikä, int palkkaa ) {
Tämä . nimi = nimi ;
Tämä . ikä = ikä ;
Tämä . palkkaa = palkkaa ;
}
julkinen merkkijono getName ( ) {
palata nimi ;
}
julkinen int getAge ( ) {
palata ikä ;
}
julkinen int saa palkkaa ( ) {
palata palkkaa ;
}
julkinen merkkijono toString ( ) {
palata nimi + '(ikä' + ikä + ', palkka $' + palkkaa + ')' ;
}
}
Koodin kuvaus on alla:
- Luokka nimeltä ' Henkilö ' kolmella kentällä: ' nimi ”, “ ikä ”, ja ” palkkaa ” harkitaan.
- Lajittele sen jälkeen henkilö-objektien kokoelma heidän palkansa mukaan laskevaan järjestykseen.
Lähtö
Tulos osoittaa, että palkat on lajiteltu laskevaan järjestykseen.
Johtopäätös
Javassa Comparator-käyttöliittymä on tehokas työkalu, jonka avulla käyttäjät voivat lajitella objekteja mukautettujen kriteerien perusteella. Se ohittaa vertailu()-menetelmän, käyttäjät voivat määritellä oman vertailufunktionsa ja käyttää sitä lajitellakseen objektikokoelmia monin eri tavoin. Tässä artikkelissa on selitetty Comparator-käyttöliittymä ja käytännön esimerkkejä Javassa.