Was ist die Komparatorschnittstelle in Java mit Beispielen?
Die Comparator-Schnittstelle enthält die Methoden „compare()“ und „equals()“. Die erste Methode wird verwendet, um zwei Objekte zu berechnen, indem ein ganzzahliger Wert zurückgegeben wird. Die andere Methode wird zur Berechnung der Gleichheit zweier Komparatorobjekte verwendet.
Hier sind verschiedene Beispiele für die Verwendung der Comparator-Schnittstelle in Java:
Beispiel 1: Sortieren Sie eine Liste basierend auf der Länge
In diesem Beispiel wird eine Liste von Zeichenfolgen betrachtet und diese nach ihrer Länge statt nach alphabetischer Reihenfolge sortiert:
importieren java.util.ArrayList ;
importieren java.util.Collections ;
importieren java.util.Comparator ;
importieren java.util.List ;
öffentlich Klasse Hauptsächlich {
öffentlich statisch Leere hauptsächlich ( Zeichenfolge [ ] args ) {
Aufführen < Zeichenfolge > Liste = neu Anordnungsliste <> ( ) ;
Liste. hinzufügen ( 'John' ) ;
Liste. hinzufügen ( 'Bob' ) ;
Liste. hinzufügen ( „Alice“ ) ;
Sammlungen . Sortieren ( Liste ) ;
System . aus . println ( Liste ) ;
Sammlungen . Sortieren ( Liste, neu StringLengthComparator ( ) ) ;
System . aus . println ( Liste ) ;
}
} // Eine Klasse ist definiert
Klasse StringLengthComparator implementiert Komparator < Zeichenfolge > {
öffentlich int vergleichen ( Zeichenfolge s1, Zeichenfolge s2 ) {
zurückkehren Ganze Zahl . vergleichen ( s1. Länge ( ) , s2. Länge ( ) ) ;
}
}
Die Beschreibung des obigen Codes finden Sie unten:
- Erstellen Sie zunächst eine benutzerdefinierte Comparator-Klasse namens StringLengthComparator, die die Comparator
-Schnittstelle implementiert. - Sie überschreibt die Methode „compare()“ zum Vergleichen der Länge zweier Zeichenfolgen.
- Übergeben Sie am Ende eine Instanz an die Methode.sort(), um die Liste mithilfe unseres benutzerdefinierten Komparators zu sortieren.
Ausgang
Die erste Ausgabe ist das Ergebnis der Sortierung der Liste mit natürlicher Reihenfolge, während die zweite Ausgabe das Ergebnis der Sortierung der Liste mit unserem benutzerdefinierten Komparator basierend auf der Länge jeder Zeichenfolge ist.
Beispiel 2: Sortieren von Objekten basierend auf einem bestimmten Feld
Ein weiteres Beispiel wird durchgeführt, um Objekte basierend auf einem bestimmten Feld zu sortieren. Um dies zu erreichen, wird die Comparator-Schnittstelle verwendet:
importieren java.util.ArrayList ;importieren java.util.Collections ;
importieren java.util.Comparator ;
importieren java.util.List ;
öffentlich Klasse Hauptsächlich {
öffentlich statisch Leere hauptsächlich ( Zeichenfolge [ ] args ) {
Aufführen < Person > Personen = neu Anordnungsliste <> ( ) ; // Namen, Alter und Gehälter zuweisen
Personen. hinzufügen ( neu Person ( „Alice“ , 25 , 50000 ) ) ;
Personen. hinzufügen ( neu Person ( 'Bob' , 30 , 75000 ) ) ;
Personen. hinzufügen ( neu Person ( 'Charlie' , zwanzig , 40000 ) ) ;
Komparator < Person > Gehaltskomparator = neu Komparator < Person > ( ) {
// Personen nach Gehalt sortieren
öffentlich int vergleichen ( Person p1, Person p2 ) {
zurückkehren Ganze Zahl . vergleichen ( p2. getSalary ( ) , S. 1. getSalary ( ) ) ;
}
} ;
Sammlungen . Sortieren ( Personen, Gehaltsvergleicher ) ; zurückkehren Werte sortieren
// Eine sortierte Personenliste drucken
für ( Person Person : Personen ) {
System . aus . println ( Person ) ;
}
}
}
Klasse Person { // Name, Alter und Gehalt festlegen
Privatgelände Zeichenfolge Name ; // Geltungsbereich innerhalb einer Klasse
Privatgelände int Alter ;
Privatgelände int Gehalt ;
öffentlich Person ( Zeichenfolge Name, int Alter, int Gehalt ) {
Das . Name = Name ;
Das . Alter = Alter ;
Das . Gehalt = Gehalt ;
}
öffentlich Zeichenfolge getName ( ) {
zurückkehren Name ;
}
öffentlich int getAge ( ) {
zurückkehren Alter ;
}
öffentlich int getSalary ( ) {
zurückkehren Gehalt ;
}
öffentlich Zeichenfolge toString ( ) {
zurückkehren Name + ' (Alter ' + Alter + ', Gehalt $' + Gehalt + ')' ;
}
}
Die Beschreibung des Codes finden Sie unten:
- Eine Klasse namens „ Person ” mit drei Feldern: „ Name “, „ Alter ', Und ' Gehalt ' gilt als.
- Sortieren Sie anschließend eine Sammlung von Personenobjekten nach ihrem Gehalt in absteigender Reihenfolge.
Ausgang
Die Ausgabe zeigt, dass die Gehälter in absteigender Reihenfolge sortiert wurden.
Abschluss
In Java ist die Comparator-Schnittstelle ein leistungsstarkes Tool, mit dem Benutzer Objekte anhand benutzerdefinierter Kriterien sortieren können. Es überschreibt die Methode Compare(), Benutzer können ihre eigene Vergleichsfunktion definieren und diese verwenden, um Sammlungen von Objekten auf verschiedene Arten zu sortieren. In diesem Artikel wurde die Comparator-Schnittstelle zusammen mit praktischen Beispielen in Java erläutert.