Hva er Comparator Interface i Java med eksempler?
Comparator-grensesnittet inneholder compare() og equals()-metoder. Den første metoden brukes til å beregne to objekter ved å returnere en heltallsverdi. Den andre metoden brukes for å beregne to komparatorobjekter for likhet.
Her er forskjellige eksempler på hvordan du bruker Comparator-grensesnittet i Java:
Eksempel 1: Sorter en liste basert på lengden
I dette eksemplet vurderes en liste over strenger og sorterer dem basert på lengden i stedet for alfabetisk rekkefølge:
import java.util.ArrayList ;
import java.util.samlinger ;
import java.util.Comparator ;
import java.util.List ;
offentlig klasse Hoved {
offentlig statisk tomrom hoved- ( String [ ] args ) {
Liste < String > liste = ny ArrayList <> ( ) ;
liste. Legg til ( 'John' ) ;
liste. Legg til ( 'Bob' ) ;
liste. Legg til ( 'Alice' ) ;
Samlinger . sortere ( liste ) ;
System . ute . println ( liste ) ;
Samlinger . sortere ( liste, ny StringLengthComparator ( ) ) ;
System . ute . println ( liste ) ;
}
} // En klasse er definert
klasse StringLengthComparator redskaper Komparator < String > {
offentlig int sammenligne ( String s1, String s2 ) {
komme tilbake Heltall . sammenligne ( s1. lengde ( ) , s2. lengde ( ) ) ;
}
}
Beskrivelsen av koden ovenfor er gitt nedenfor:
- Først oppretter du en tilpasset Comparator-klasse kalt StringLengthComparator som implementerer Comparator
-grensesnittet. - Den overstyrer compare()-metoden for å sammenligne lengden på to strenger.
- Til slutt sender du en forekomst til metoden.sort() for å sortere listen ved å bruke vår egendefinerte komparator.
Produksjon
Den første utgangen er resultatet av sortering av listen ved hjelp av naturlig rekkefølge, mens den andre utgangen er resultatet av sortering av listen ved hjelp av vår tilpassede komparator basert på lengden på hver streng.
Eksempel 2: Sortering av objekter basert på et spesifikt felt
Et annet eksempel er utført for å sortere objekter basert på et spesifikt felt. Komparatorgrensesnittet brukes for å oppnå dette:
import java.util.ArrayList ;import java.util.samlinger ;
import java.util.Comparator ;
import java.util.List ;
offentlig klasse Hoved {
offentlig statisk tomrom hoved- ( String [ ] args ) {
Liste < Person > personer = ny ArrayList <> ( ) ; // Tildel navn, alder og lønn
personer. Legg til ( ny Person ( 'Alice' , 25 , 50 000 ) ) ;
personer. Legg til ( ny Person ( 'Bob' , 30 , 75 000 ) ) ;
personer. Legg til ( ny Person ( 'Charlie' , tjue , 40 000 ) ) ;
Komparator < Person > lønnSammenligner = ny Komparator < Person > ( ) {
// Sorter personer etter lønn
offentlig int sammenligne ( Person p1, Person p2 ) {
komme tilbake Heltall . sammenligne ( s2. få lønn ( ) , s1. få lønn ( ) ) ;
}
} ;
Samlinger . sortere ( personer, lønnKomparator ) ; komme tilbake sorteringsverdier
// Skriv ut en sortert liste over personer
til ( Person person : personer ) {
System . ute . println ( person ) ;
}
}
}
klasse Person { // Definer navn, alder og lønn
privat String Navn ; // omfang innenfor i en klasse
privat int alder ;
privat int lønn ;
offentlig Person ( String Navn, int alder, int lønn ) {
dette . Navn = Navn ;
dette . alder = alder ;
dette . lønn = lønn ;
}
offentlig String getName ( ) {
komme tilbake Navn ;
}
offentlig int fåAlder ( ) {
komme tilbake alder ;
}
offentlig int få lønn ( ) {
komme tilbake lønn ;
}
offentlig String til String ( ) {
komme tilbake Navn + '(alder' + alder + ', lønn $' + lønn + ')' ;
}
}
Beskrivelsen av koden er gitt nedenfor:
- En klasse kalt ' Person ' med tre felt: ' Navn ', ' alder ', og ' lønn ' regnes.
- Sorter deretter en samling av Person-objekter avhengig av lønnen deres i synkende rekkefølge.
Produksjon
Utdataene viser at lønningene er sortert etter synkende rekkefølge.
Konklusjon
I Java er Comparator-grensesnittet et kraftig verktøy som lar brukere sortere objekter basert på egendefinerte kriterier. Den overstyrer compare()-metoden, brukere kan definere sin egen sammenligningsfunksjon og bruke den til å sortere samlinger av objekter på en rekke måter. Denne artikkelen har forklart Comparator-grensesnittet sammen med praktiske eksempler i Java.