Hva er Comparator Interface i Java med eksempler?

Hva Er Comparator Interface I Java Med Eksempler



I Java brukes Comparator-grensesnittet til å definere en sammenligningsfunksjon som kan brukes til å sortere en samling objekter. Den tillater sortering av objekter basert på egendefinerte kriterier i stedet for standard sammenligning basert på naturlig rekkefølge. Den har ulike applikasjoner for å tilpasse funksjoner etter behov. Denne artikkelen vil forklare Comparator-grensesnittet sammen med en rekke eksempler i Java.

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.