Kas yra „Java“ palyginimo sąsaja su pavyzdžiais?

Kas Yra Java Palyginimo Sasaja Su Pavyzdziais



Java programoje Comparator sąsaja naudojama norint apibrėžti palyginimo funkciją, kurią galima naudoti objektų rinkiniui rūšiuoti. Tai leidžia rūšiuoti objektus pagal pasirinktinius kriterijus, o ne pagal numatytąjį palyginimą, pagrįstą natūralia tvarka. Jame yra įvairių programų, skirtų funkcijoms pritaikyti pagal poreikius. Šiame straipsnyje bus paaiškinta Comparator sąsaja ir daugybė Java pavyzdžių.

Kas yra „Java“ palyginimo sąsaja su pavyzdžiais?

Komparatoriaus sąsajoje yra palyginimo () ir lygių () metodai. Pirmasis metodas naudojamas apskaičiuojant du objektus, grąžinant sveikojo skaičiaus reikšmę. Kitas metodas naudojamas dviejų lyginamųjų objektų lygybei apskaičiuoti.

Čia pateikiami įvairūs palyginimo sąsajos naudojimo Java programoje pavyzdžiai:







1 pavyzdys: Rūšiuokite sąrašą pagal ilgį

Šiame pavyzdyje nagrinėjamas eilučių sąrašas ir rūšiuojamas pagal ilgį, o ne pagal abėcėlę:



importuoti java.util.ArrayList ;

importuoti java.util.Collections ;

importuoti java.util.Comparator ;

importuoti java.util.List ;

viešas klasė Pagrindinis {

viešas statinis tuštuma pagrindinis ( Styga [ ] args ) {

Sąrašas < Styga > sąrašą = naujas ArrayList <> ( ) ;

sąrašą. papildyti ( 'Jonas' ) ;

sąrašą. papildyti ( 'Bobas' ) ;

sąrašą. papildyti ( 'Alisa' ) ;

Kolekcijos . rūšiuoti ( sąrašą ) ;

Sistema . išeiti . println ( sąrašą ) ;

Kolekcijos . rūšiuoti ( sąrašas, naujas StringLengthComparator ( ) ) ;

Sistema . išeiti . println ( sąrašą ) ;

}

} // Apibrėžiama klasė

klasė StringLengthComparator padargai Palyginimas < Styga > {

viešas tarpt palyginti ( Styga s1, Styga s2 ) {

grąžinti Sveikasis skaičius . palyginti ( s1. ilgio ( ) , s2. ilgio ( ) ) ;

}

}

Aukščiau pateikto kodo aprašymas pateikiamas žemiau:



  • Pirmiausia sukurkite pasirinktinę Comparator klasę, vadinamą StringLengthComparator, kuri įgyvendina sąsają Comparator.
  • Jis nepaiso palyginimo () metodo, skirto dviejų eilučių ilgiui palyginti.
  • Pabaigoje perduokite egzempliorių .sort() metodui, kad rūšiuotumėte sąrašą naudodami mūsų pasirinktinį palyginiklį.

Išvestis





Pirmoji išvestis yra sąrašo rūšiavimo naudojant natūralią tvarką rezultatas, o antroji išvestis yra sąrašo rūšiavimo naudojant pasirinktinį palyginiklį pagal kiekvienos eilutės ilgį rezultatas.



2 pavyzdys: objektų rūšiavimas pagal konkretų lauką

Kitas pavyzdys yra skirtas rūšiuoti objektus pagal konkretų lauką. Šiam tikslui pasiekti naudojama palyginimo sąsaja:

importuoti java.util.ArrayList ;

importuoti java.util.Collections ;

importuoti java.util.Comparator ;

importuoti java.util.List ;

viešas klasė Pagrindinis {

viešas statinis tuštuma pagrindinis ( Styga [ ] args ) {

Sąrašas < Asmuo > asmenų = naujas ArrayList <> ( ) ; // Priskirti vardą, amžių ir atlyginimus

asmenų. papildyti ( naujas Asmuo ( 'Alisa' , 25 , 50 000 ) ) ;

asmenų. papildyti ( naujas Asmuo ( 'Bobas' , 30 , 75 000 ) ) ;

asmenų. papildyti ( naujas Asmuo ( 'Čarlis' , dvidešimt , 40 000 ) ) ;

Palyginimas < Asmuo > atlyginimasPalygintuvas = naujas Palyginimas < Asmuo > ( ) {

// Rūšiuoti asmenis pagal atlyginimą

viešas tarpt palyginti ( Asmuo p1, Asmuo p2 ) {

grąžinti Sveikasis skaičius . palyginti ( p2. gauti atlyginimą ( ) , p1. gauti atlyginimą ( ) ) ;

}

} ;

Kolekcijos . rūšiuoti ( asmenys, atlyginimasPalygintuvas ) ; grąžinti rūšiuoti vertes

// Spausdinti surūšiuotą asmenų sąrašą

dėl ( Asmuo asmuo : asmenų ) {

Sistema . išeiti . println ( asmuo ) ;

}

}

}

klasė Asmuo { // Nurodykite vardą, amžių ir atlyginimą

privatus Styga vardas ; // apimtis klasėje
privatus tarpt amžiaus ;
privatus tarpt atlyginimas ;

viešas Asmuo ( Styga vardas, tarpt amžius, tarpt atlyginimas ) {
tai . vardas = vardas ;
tai . amžiaus = amžiaus ;
tai . atlyginimas = atlyginimas ;
}
viešas Styga getName ( ) {
grąžinti vardas ;
}
viešas tarpt getAge ( ) {
grąžinti amžiaus ;
}
viešas tarpt gauti atlyginimą ( ) {
grąžinti atlyginimas ;
}
viešas Styga toString ( ) {
grąžinti vardas + '(amžius' + amžiaus + ', atlyginimas $' + atlyginimas + ')' ;
}
}

Kodo aprašymas pateikiamas žemiau:

  • Klasė, pavadinta „ Asmuo “ su trimis laukais: „ vardas “, „ amžiaus “ ir „ atlyginimas ' Manoma.
  • Po to surūšiuokite Asmens objektų kolekciją, atsižvelgiant į jų atlyginimą, mažėjančia tvarka.

Išvestis

Išeiga rodo, kad atlyginimai buvo surūšiuoti mažėjimo tvarka.

Išvada

Java programoje Comparator sąsaja yra galingas įrankis, leidžiantis vartotojams rūšiuoti objektus pagal pasirinktinius kriterijus. Jis nepaiso palyginimo () metodo, vartotojai gali apibrėžti savo palyginimo funkciją ir naudoti ją įvairiais būdais rūšiuodami objektų kolekcijas. Šiame straipsnyje paaiškinta Comparator sąsaja ir praktiniai Java pavyzdžiai.