Die vordefinierten Sort () -Methoden sollen vordefinierte Objekte sortieren. Was ist mit benutzerdefinierten Objekten?? Java hat eine Schnittstelle namens Vergleichbar. Eine Schnittstelle ist eine Art Klasse, dessen Methoden Erklärungen ohne Definitionen sind (Körper). Daher muss eine Klasse von einer Schnittstelle implementiert werden, damit die Methoden definiert werden sollen (gegebene Körper). Aus der implementierten Klasse können Objekte aus einem vom Programmierer gegebenen Namen instanziiert werden.
Java hat eine vordefinierte vergleichbare Klasse. Die Sort () -Methoden in Sammlungen und Arrays verwenden die vordefinierte vergleichbare Klasse, um vordefinierte Objekte zu sortieren. Um jedoch eine Liste oder ein Array benutzerdefinierter Objekte zu sortieren, muss der Programmierer eine vergleichbare Benutzerklasse von der vergleichbaren Schnittstelle implementieren (definieren). Diese implementierte (definierte) Benutzerklasse ermöglicht die Sortierung von benutzerdefinierten Objekten in einer Liste oder einem Array. Eine vordefinierte vergleichbare Klasse ermöglicht daher die Sortierung vordefinierter Objekte, während eine benutzerdefinierte vergleichbare Klasse die Sortierung benutzerdefinierter Objekte ermöglicht. Benutzerdefinierte Objekte sind keine Literale, daher benötigt eine Klasse benutzerdefinierter Objekte eine eigene benutzerdefinierte vergleichbare Implementierung.
Dieser Artikel zeigt, wie man in Java vergleichbar schreibt.
Beispiel der benutzerdefinierten Klasse
Die benutzerdefinierte Klasse implementiert tatsächlich die vergleichbare Schnittstelle. Die vergleichbare Schnittstelle hat nur eine Methode, nämlich,
int vergleicheto (t o)Es ist entweder definiert (mit einem Körper), um aufsteigend zu sortieren oder zu definieren, um absteigend zu sortieren. Es gibt eine negative Ganzzahl, Null oder eine positive Ganzzahl zurück, da sein Objekt geringer ist als, gleich oder größer als das angegebene Objekt.
Diese von der vergleichbare Schnittstelle implementierte Klasse von Interesse ist die benutzerdefinierte Klasse mit jetzt eine definierte Vergleiche () -Methode. Dies ist jedoch keine vollständige benutzerdefinierte Klasse. Es kann andere Methoden und Eigenschaften (Felder) haben, je nach dem Programmierer. Die von dieser Benutzer implementierten Klasse instanziierten Objekte sind die Objekte der Liste oder des Arrays, die sortiert werden sollen. Jedes Objekt hat die gleiche Vergleiche () -Methode in der Sortierung, die die Sortierung steuert.
Beispielklasse
Der folgende Code zeigt eine benutzerdefinierte Klasse für Mitarbeiter, aus denen Objekte (Mitarbeiter) instanziiert werden. Damit die Objekte sortiert werden können, implementiert der Mitarbeiter -Mitarbeiter eine vergleichbare Schnittstelle und definiert (gibt einen Körper) die Vergleiche () -Methode als spezielle Methode der Klasse.
Der Mitarbeiter der Klasse implementiert vergleichbarHier gibt es kein wirkliches Objektliteral. Die Absicht ist es, die Mitarbeiter nach Alter zu sortieren und aufzusteigen. Dies vergleicht auch den Mitarbeiter mit dem Alter. Und so muss der vergleiche () definiert werden. Diese Definition dient zum Sortieren des Aufstiegs. In dieser Methode Körper (Definition), Alter und EMP.Alter, beziehen Sie sich auf zwei verschiedene Elemente in der Liste oder im Array. Alter bezieht sich auf das Element vor EMP.Alter .
Eine geeignete Main () -Methode dafür ist:
public static void main (String [] args)Lesen Sie den Code durch. Die Ausgabe ist:
Christopher 30nach Alter sortiert aufsteigend sortiert.
Sortieren absteigend
Die obige Vergleiche () -Methode -Definition dient zum Aufstieg. Codieren Sie es wie folgt, damit es absteigend sortiert, wie folgt:
public int vergleicheto (Mitarbeiter emp)Beachten Sie, dass < has not been changed. However, -1 returned has been changed to +1; and +1 returned has been changed to -1. With this, the output for the above specific list is:
Peter 50sortiert nach Alter, nach Alter.
Vergleichbar für Array
Eine vergleichbare Klasse für ein Array entspricht einer vergleichbaren Klasse für eine Liste, wie oben erläutert. Die Klasse ist ein Programmierer implementiert eine Klasse, die die vergleichbare Schnittstelle implementiert. Dieser implementierte Programmierer definiert auch die Vergleiche () -Methode, entweder aufsteigend oder absteigend. Die von dieser Klasse instanziierten Objekte werden zu Objekten für das Array. Die definierte Vergleiche () -Methode steuert ihre Sortierung.
Die folgende Hauptmethode sortiert ein Array der gleichen oben genannten Mitarbeiter und steigt auf:
Mitarbeiter [] arr = neuer Mitarbeiter [3];Beachten Sie, dass statt von,
Sammlungen.sortieren (al);Es gibt,
Arrays.sortieren (arr);Diesmal, weil ein Array nicht wirklich eine Liste ist. Die Ausgabe sollte sein
Christopher 30aufsteigend, nach Alter. Dies ist unter der Erkrankung, dass der Körper der Vergleiche () -Methode lautet:
public int vergleicheto (Mitarbeiter emp)Wenn der Körper wäre,
public int vergleicheto (Mitarbeiter emp)Dann würde das Array sortiert werden, um zum Ausgang zu führen:
Peter 50Abschluss
Die vordefinierte vergleichbare Klasse ermöglicht die Sortierung vordefinierter Objekte, während die benutzerdefinierte vergleichbare Klasse die Sortierung von benutzerdefinierten Objekten ermöglicht. Benutzerdefinierte Objekte sind keine Literale, daher benötigt eine Klasse benutzerdefinierter Objekte eine eigene benutzerdefinierte vergleichbare Implementierung.
Die Interessenklasse, deren Objekte instanziiert werden sollen, muss die vergleichbare Schnittstelle implementieren. Die vergleichbare Schnittstelle hat die Methode vergleicheto (), die in der Klasse definiert werden muss. Es ist diese Methode, die die Sortierung in der Liste oder im Array steuert.
Die gleiche vergleichbare Klasse zum Sortieren einer Liste kann zum Sortieren eines Arrays verwendet werden. Die Klasse ist ein Programmierer implementiert eine Klasse, die die vergleichbare Schnittstelle implementiert. Dieser implementierte Programmierer definiert auch die Vergleiche () -Methode, entweder aufsteigend oder absteigend. Die von dieser Klasse instanziierten Objekte werden zu Objekten des Arrays.