Was ist die Komparatorschnittstelle in Java mit Beispielen?

Was Ist Die Komparatorschnittstelle In Java Mit Beispielen



In Java wird die Comparator-Schnittstelle verwendet, um eine Vergleichsfunktion zu definieren, die zum Sortieren einer Sammlung von Objekten verwendet werden kann. Es ermöglicht das Sortieren von Objekten nach benutzerdefinierten Kriterien anstelle des Standardvergleichs nach natürlicher Reihenfolge. Es verfügt über verschiedene Anwendungen, um die Funktionen an die Bedürfnisse anzupassen. In diesem Artikel wird die Comparator-Schnittstelle zusammen mit zahlreichen Beispielen in Java erläutert.

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.