Hvad er Comparator Interface i Java med eksempler?

Hvad Er Comparator Interface I Java Med Eksempler



I Java bruges Comparator-grænsefladen til at definere en sammenligningsfunktion, der kan bruges til at sortere en samling af objekter. Det tillader sortering af objekter baseret på brugerdefinerede kriterier snarere end standardsammenligningen baseret på naturlig rækkefølge. Den har forskellige applikationer til at tilpasse funktioner efter behov. Denne artikel vil forklare Comparator-grænsefladen sammen med adskillige eksempler i Java.

Hvad er Comparator Interface i Java med eksempler?

Komparator-grænsefladen indeholder compare() og equals() metoder. Den første metode bruges til at beregne to objekter ved at returnere en heltalsværdi. Den anden metode bruges til at beregne to komparatorobjekter for lighed.

Her er forskellige eksempler på, hvordan man bruger Comparator-grænsefladen i Java:







Eksempel 1: Sorter en liste baseret på længden

I dette eksempel betragtes en liste over strenge, som sorterer dem ud fra deres længde i stedet for alfabetisk rækkefølge:



importere java.util.ArrayList ;

importere java.util.Collections ;

importere java.util.Comparator ;

importere java.util.List ;

offentlig klasse Hoved {

offentlig statisk ugyldig vigtigste ( Snor [ ] args ) {

Liste < Snor > liste = ny ArrayList <> ( ) ;

liste. tilføje ( 'John' ) ;

liste. tilføje ( 'Bob' ) ;

liste. tilføje ( 'Alice' ) ;

Samlinger . sortere ( liste ) ;

System . ud . println ( liste ) ;

Samlinger . sortere ( liste, ny StringLengthComparator ( ) ) ;

System . ud . println ( liste ) ;

}

} // En klasse er defineret

klasse StringLengthComparator redskaber Komparator < Snor > {

offentlig int sammenligne ( Snor s1, Snor s2 ) {

Vend tilbage Heltal . sammenligne ( s1. længde ( ) s2. længde ( ) ) ;

}

}

Beskrivelsen af ​​ovenstående kode er givet nedenfor:



  • Først skal du oprette en tilpasset Comparator-klasse kaldet StringLengthComparator, der implementerer Comparator-grænsefladen.
  • Det tilsidesætter compare()-metoden til at sammenligne længden af ​​to strenge.
  • Til sidst skal du videregive en instans til metoden.sort() for at sortere listen ved hjælp af vores tilpassede komparator.

Produktion





Det første output er resultatet af sortering af listen ved hjælp af naturlig rækkefølge, mens det andet output er resultatet af sortering af listen ved hjælp af vores tilpassede komparator baseret på længden af ​​hver streng.



Eksempel 2: Sortering af objekter baseret på et specifikt felt

Et andet eksempel er udført for at sortere objekter baseret på et specifikt felt. Komparator-grænsefladen bruges til at opnå dette:

importere java.util.ArrayList ;

importere java.util.Collections ;

importere java.util.Comparator ;

importere java.util.List ;

offentlig klasse Hoved {

offentlig statisk ugyldig vigtigste ( Snor [ ] args ) {

Liste < Person > personer = ny ArrayList <> ( ) ; // Tildel navn, alder og løn

personer. tilføje ( ny Person ( 'Alice' , 25 , 50.000 ) ) ;

personer. tilføje ( ny Person ( 'Bob' , 30 , 75.000 ) ) ;

personer. tilføje ( ny Person ( 'Charlie' , tyve , 40.000 ) ) ;

Komparator < Person > lønsammenligner = ny Komparator < Person > ( ) {

// Sorter personer ud fra løn

offentlig int sammenligne ( Person p1, Person p2 ) {

Vend tilbage Heltal . sammenligne ( s2. få Løn ( ) s1. få Løn ( ) ) ;

}

} ;

Samlinger . sortere ( personer, lønKomparator ) ; Vend tilbage sorteringsværdier

// Udskriv en sorteret liste over personer

til ( Person person : personer ) {

System . ud . println ( person ) ;

}

}

}

klasse Person { // Definer navn, alder og løn

privat Snor navn ; // omfang indenfor i en klasse
privat int alder ;
privat int løn ;

offentlig Person ( Snor navn, int alder, int løn ) {
det her . navn = navn ;
det her . alder = alder ;
det her . løn = løn ;
}
offentlig Snor fåNavn ( ) {
Vend tilbage navn ;
}
offentlig int getAlder ( ) {
Vend tilbage alder ;
}
offentlig int få Løn ( ) {
Vend tilbage løn ;
}
offentlig Snor til String ( ) {
Vend tilbage navn + '(alder' + alder + ', løn $' + løn + ')' ;
}
}

Beskrivelsen af ​​koden er givet nedenfor:

  • En klasse kaldet ' Person ' med tre felter: ' navn ', ' alder ', og ' løn ' anses.
  • Sorter derefter en samling af personobjekter afhængigt af deres løn i faldende rækkefølge.

Produktion

Outputtet viser, at lønningerne er sorteret efter faldende rækkefølge.

Konklusion

I Java er Comparator-grænsefladen et kraftfuldt værktøj, der giver brugerne mulighed for at sortere objekter baseret på brugerdefinerede kriterier. Den tilsidesætter compare()-metoden, brugere kan definere deres egen sammenligningsfunktion og bruge den til at sortere samlinger af objekter på en række forskellige måder. Denne artikel har forklaret Comparator-grænsefladen sammen med praktiske eksempler i Java.