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.