Wie schreibt man vergleichbar in Java?

Wie schreibt man vergleichbar in Java?
Beispiele für Java -Listen sind; Vektor, Stack, Attributelist, ArrayList und LinkedList. Die Java -Sammlungsklasse hat überlastete Methoden, um eine Liste vordefinierter Objekte zu sortieren. Die Java Arrays -Klasse hat überlastete Methoden, um ein Array vordefinierter Objekte zu sortieren.

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 vergleichbar
String fname; int Alter;
Mitarbeiter (String fname, int age)
Das.fname = fname;
Das.Alter = Alter;

public int vergleicheto (Mitarbeiter emp)
if (Alter < emp.age)
Return -1;
sonst wenn (Alter == EMP.Alter)
Rückkehr 0;
anders
Rückgabe +1;

Hier 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)
Anordnungsliste AL = NeuarrayList();
al.add (neuer Mitarbeiter ("John", 40)); al.add (neuer Mitarbeiter ("Peter", 50));
al.add (neuer Mitarbeiter ("Christopher", 30));
Sammlungen.sortieren (al);
für (int i = 0; iSystem.aus.println (al.bekomme ich).fname + " + al.bekomme ich).Alter);

Lesen Sie den Code durch. Die Ausgabe ist:

Christopher 30
John 40
Peter 50

nach 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)
if (Alter < emp.age)
Rückgabe +1;
sonst wenn (Alter == EMP.Alter)
Rückkehr 0;
anders
Return -1;

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 50
John 40
Christopher 30

sortiert 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];
arr [0] = neuer Mitarbeiter ("John", 40); arr [1] = neuer Mitarbeiter ("Peter", 50);
arr [2] = neuer Mitarbeiter ("Christopher", 30);
Arrays.sortieren (arr);
für (int i = 0; iSystem.aus.println (arr [i].fname + " + arr [i].Alter);

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 30
John 40
Peter 50

aufsteigend, nach Alter. Dies ist unter der Erkrankung, dass der Körper der Vergleiche () -Methode lautet:

public int vergleicheto (Mitarbeiter emp)
if (Alter < emp.age)
Return -1;
sonst wenn (Alter == EMP.Alter)
Rückkehr 0;
anders
Rückgabe +1;

Wenn der Körper wäre,

public int vergleicheto (Mitarbeiter emp)
if (Alter < emp.age)
Rückgabe +1;
sonst wenn (Alter == EMP.Alter)
Rückkehr 0;
anders
Return -1;

Dann würde das Array sortiert werden, um zum Ausgang zu führen:

Peter 50
John 40
Christopher 30

Abschluss

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.