Vad är Comparator Interface i Java med exempel?

Vad Ar Comparator Interface I Java Med Exempel



I Java används Comparator-gränssnittet för att definiera en jämförelsefunktion som kan användas för att sortera en samling objekt. Det tillåter sortering av objekt baserat på anpassade kriterier snarare än standardjämförelsen baserat på naturlig ordning. Den har olika applikationer för att anpassa funktioner efter behov. Den här artikeln kommer att förklara Comparator-gränssnittet tillsammans med många exempel i Java.

Vad är Comparator Interface i Java med exempel?

Jämförelsegränssnittet innehåller metoderna compare() och equals(). Den första metoden används för att beräkna två objekt genom att returnera ett heltalsvärde. Den andra metoden används för att beräkna två komparatorobjekt för likhet.

Här är olika exempel på hur man använder Comparator-gränssnittet i Java:







Exempel 1: Sortera en lista baserat på längden

I det här exemplet övervägs en lista med strängar och sorterar dem baserat på deras längd istället för alfabetisk ordning:



importera java.util.ArrayList ;

importera java.util.Collections ;

importera java.util.Comparator ;

importera java.util.List ;

offentlig klass Main {

offentlig statisk tomhet huvud ( Sträng [ ] args ) {

Lista < Sträng > lista = ny ArrayList <> ( ) ;

lista. Lägg till ( 'John' ) ;

lista. Lägg till ( 'Guppa' ) ;

lista. Lägg till ( 'Alice' ) ;

Samlingar . sortera ( lista ) ;

Systemet . ut . println ( lista ) ;

Samlingar . sortera ( lista, ny StringLengthComparator ( ) ) ;

Systemet . ut . println ( lista ) ;

}

} // En klass är definierad

klass StringLengthComparator redskap Komparator < Sträng > {

offentlig int jämföra ( Sträng s1, Sträng s2 ) {

lämna tillbaka Heltal . jämföra ( s1. längd ( ) s2. längd ( ) ) ;

}

}

Beskrivningen av ovanstående kod ges nedan:



  • Skapa först en anpassad Comparator-klass som heter StringLengthComparator som implementerar Comparator-gränssnittet.
  • Den åsidosätter metoden compare() för att jämföra längden på två strängar.
  • Till slut skickar du en instans till metoden.sort() för att sortera listan med vår anpassade komparator.

Produktion





Den första utgången är resultatet av att sortera listan med naturlig ordning, medan den andra utgången är resultatet av att sortera listan med vår anpassade komparator baserat på längden på varje sträng.



Exempel 2: Sortering av objekt baserat på ett specifikt fält

Ett annat exempel utförs för att sortera objekt baserat på ett specifikt fält. Komparatorgränssnittet används för att uppnå detta:

importera java.util.ArrayList ;

importera java.util.Collections ;

importera java.util.Comparator ;

importera java.util.List ;

offentlig klass Main {

offentlig statisk tomhet huvud ( Sträng [ ] args ) {

Lista < Person > personer = ny ArrayList <> ( ) ; // Tilldela namn, ålder och löner

personer. Lägg till ( ny Person ( 'Alice' , 25 , 50 000 ) ) ;

personer. Lägg till ( ny Person ( 'Guppa' , 30 , 75 000 ) ) ;

personer. Lägg till ( ny Person ( 'Charlie' , tjugo , 40 000 ) ) ;

Komparator < Person > lönComparator = ny Komparator < Person > ( ) {

// Sortera personer efter lön

offentlig int jämföra ( Person p1, Person p2 ) {

lämna tillbaka Heltal . jämföra ( p2. få Lön ( ) , sid. få Lön ( ) ) ;

}

} ;

Samlingar . sortera ( personer, lönComparator ) ; lämna tillbaka sorteringsvärden

// Skriv ut en sorterad lista över personer

för ( Person person : personer ) {

Systemet . ut . println ( person ) ;

}

}

}

klass Person { // Definiera namn, ålder och lön

privat Sträng namn ; // omfattning inom i en klass
privat int ålder ;
privat int lön ;

offentlig Person ( Sträng namn, int ålder, int lön ) {
detta . namn = namn ;
detta . ålder = ålder ;
detta . lön = lön ;
}
offentlig Sträng hämta namn ( ) {
lämna tillbaka namn ;
}
offentlig int fåAge ( ) {
lämna tillbaka ålder ;
}
offentlig int få Lön ( ) {
lämna tillbaka lön ;
}
offentlig Sträng att stränga ( ) {
lämna tillbaka namn + ' (ålder ' + ålder + ', lön $' + lön + ')' ;
}
}

Beskrivningen av koden ges nedan:

  • En klass som heter ' Person ' med tre fält: ' namn ”, “ ålder ', och ' lön ' anses.
  • Sortera sedan en samling Personobjekt beroende på deras lön i fallande ordning.

Produktion

Resultatet visar att lönerna har sorterats efter fallande ordning.

Slutsats

I Java är Comparator-gränssnittet ett kraftfullt verktyg som låter användare sortera objekt baserat på anpassade kriterier. Den åsidosätter compare()-metoden, användare kan definiera sin egen jämförelsefunktion och använda den för att sortera samlingar av objekt på en mängd olika sätt. Den här artikeln har förklarat Comparator-gränssnittet tillsammans med praktiska exempel i Java.