Vergleichbar vs. Komparator in Java
Hauptunterschied zwischen vergleichbar und Komparator in Java
- Vergleichbar in Java ist ein Objekt zum Vergleichen mit einem anderen Objekt, wรคhrend Comparator ein Objekt zum Vergleichen verschiedener Objekte verschiedener Klassen ist.
- Vergleichbar bietet das
compareTo()Methode zum Sortieren von Elementen in Java, wรคhrend Comparator diecompare()Methode zum Sortieren von Elementen in Java. - Eine vergleichbare Schnittstelle ist in vorhanden
java.langPaket, wรคhrend die Comparator-Schnittstelle in vorhanden istjava.utilPaket. - Comparable bietet eine einzelne Sortiersequenz, wรคhrend Comparator mehrere Sortiersequenzen bereitstellt.
- Comparable wirkt sich auf die Originalklasse aus, wohingegen Comparator keinen Einfluss auf die Originalklasse hat.

Hier habe ich den Unterschied zwischen Vergleichs- und Vergleichsmodell analysiert und werde deren Vor- und Nachteile umfassend bewerten.
Was ist vergleichbar in Java?
Vergleichbar in Java ist ein Objekt, das sich mit einem anderen Objekt vergleicht. Es hilft, die Liste der benutzerdefinierten Objekte zu sortieren. Das Java.lang.Die vergleichbare Schnittstelle sollte von einer Klasse implementiert werden, um ihre Instanzen vergleichen zu kรถnnen. Ein Array von Objekten, die eine vergleichbare Schnittstelle implementieren, wird automatisch sortiert nach Arrays.sort , Collections.sort Methoden.
In Comparable verwendete Methode
Ich mรถchte eine wichtige Methode hervorheben, die ich hรคufig in der Comparable-Schnittstelle verwende:
Vergleichen mit():
Die Methode CompareTo() wird verwendet, um eine natรผrliche Sortierung fรผr einen String durchzufรผhren. Die Bedeutung der natรผrlichen Sortierung ist die Sortierreihenfolge, die fรผr das Objekt gilt, z. B. numerische Reihenfolge zum Sortieren von Ganzzahlen, alphabetische Reihenfolge fรผr Strings usw.
Die Syntax von CompareTo() Methode ist wie folgt:
int compareTo(T obj)
In der obigen Syntax bezeichnet T den Typ der Objekte, die Sie vergleichen mรถchten.
CompareTo() Methode vergleicht das Objekt mit T-Objekt.
Ausgang:
- Es gibt 0 zurรผck, wenn die Werte gleich sind.
- Wenn das Objekt einen niedrigeren Wert hat, gibt diese Methode einen negativen Wert zurรผck.
- Wenn das Objekt einen hรถheren Wert hat, gibt es einen positiven Wert zurรผck.
Ein Beispiel fรผr Vergleichbares in Java
Das folgende Programm von Java Ein vergleichbares Beispiel zeigt den Vergleich zweier Zeichen, โaโ und โbโ. Das Zeichen โaโ steht im Alphabet vor โbโ.
Daher ist die Ausgabe -1. Das Zeichen โbโ steht alphabetisch nach โaโ. Daher ist die Ausgabe 1. Die Zeichen โaโ und โbโ sind beide gleichwertig. Daher ist die Ausgabe 0.
public class Sample_String {
public static void main(String[] args) {
String str_Sample = "a";
System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));
str_Sample = "b";
System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));
str_Sample = "b";
System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));
}
}
Ausgang
Compare To 'a' b is : -1 Compare To 'b' a is : 1 Compare To 'b' b is : 0
Was ist ein Komparator in Java?
Ein Vergleicher in Java ist ein Objekt zum Vergleichen verschiedener Objekte unterschiedlicher Klassen. Die Komparatorschnittstelle in Java wird auch verwendet, um die Objekte benutzerdefinierter Klassen anzuordnen. Es enthรคlt zwei wichtige Vergleichsschnittstellenmethoden, die als โcompareโ (Objekt obj1, Objekt obj2) und โequalsโ (Objektelement) bezeichnet werden.
Im Komparator verwendete Methode
In meiner Praxis greife ich hรคufig auf die folgenden kritischen Methoden der Komparatorschnittstelle zurรผck:
Vergleichen():
Compare() ermรถglicht es Ihnen, Objekte zu bestellen. Dazu mรผssen Sie eine Klasse erstellen, die eine Komparatorschnittstelle implementiert. Danach mรผssen Sie die Vergleichsmethode รผberschreiben.
Die Syntax des compare() Methode ist wie folgt:
compare(Object obj1, Object obj2)
In der obigen Syntax sind obj1 und obj2 zwei Objekte, die Sie mit der Methode โcompare()โ vergleichen mรผssen. compare() Methode.
Ausgang:
- Es gibt eine negative Ganzzahl zurรผck, wenn das erste Argument kleiner als das zweite ist.
- Gibt Null zurรผck, wenn das erste Argument und das zweite Argument gleich sind.
- Diese Methode kann eine positive Ganzzahl zurรผckgeben, falls das erste Argument grรถรer als das zweite ist.
Sie mรผssen sicherstellen, dass die Beziehung transitiv ist. Zum Beispiel ((compare(a, b)>0) && (compare(b, c)>0)), was impliziert, dass compare(a, c)>0 ist.
Ein Beispiel fรผr Vergleichbares in Java
Im Folgenden Java Komparator Beispiel gibt es 6 Variablen. โxโ, โyโ, โpโ, โqโ, โrโ und โsโ. Die Ausgabe ist -1, da der Wert von โxโ ist, 20 ist kleiner als der Wert von โyโ, 30. Die Ausgabe ist 0, weil der Wert von โpโ, 40, gleich dem Wert von โqโ, 40 ist .
import java.lang.Integer;
public class example {
public static void main(String args[])
{
int x = 20;
int y = 30;
// as 10 less than 20,
// Output will be a value less than zero
System.out.println(Integer.compare(x, y));
int p = 40;
int q = 40;
// as 30 equals 30,
// Output will be zero
System.out.println(Integer.compare(p, q));
int r = 20;
int s = 7;
// as 15 is greater than 8,
// Output will be a value greater than zero
System.out.println(Integer.compare(r, s));
}
}
Ausgang:
-1 0 1
Gleich():
Equals() prรผft, ob das Zahlenobjekt gleich dem Objekt ist, das als Argument รผbergeben wird, oder nicht.
Die Syntax des equals() Methode ist wie folgt:
public boolean equals(Object o)
Diese Methode benรถtigt zwei Parameter: 1) ein beliebiges Objekt und 2) einen Rรผckgabewert. Es gibt โtrueโ zurรผck, wenn das รผbergebene Argument nicht null ist und ein Objekt eines รคhnlichen Typs mit demselben numerischen Wert ist.
Beispiel fรผr die Equals-Methode:
Im folgenden Beispiel vergleiche ich die vier Variablen miteinander. Drei Variablen sind vom Typ Integer und eine vom Typ Short. Das erste Ergebnis ist falsch, da der Wert von p, der 5 betrรคgt, nicht mit dem Wert von q, der 20 betrรคgt, รผbereinstimmt.
Das zweite Ergebnis ist wahr, weil der Wert der Variablen p und r gleich ist, nรคmlich 5. Schlieรlich ist die Ausgabe falsch, da den Variablen p und s unterschiedliche Werte zugewiesen sind.
public class Test {
public static void main(String args[]) {
Integer p = 5;
Integer q = 20;
Integer r =5;
Short s = 5;
System.out.println(p.equals(q));
System.out.println(p.equals(r));
System.out.println(p.equals(s));
}
}
Ausgang
false true false
Unterschiede zwischen Comparable und Comparator in Java
Ich sehe oft Verwechslungen zwischen Java Comparable und Comparator; hier ist der Hauptunterschied:

| Vergleichsbasis | Vergleichbar | Comparator |
|---|---|---|
| Methodik | Vergleichbare Angebote compareTo() Methode zum Sortieren von Elementen in Java. |
Komparator bietet compare() Methode zum Sortieren von Elementen in Java. |
| Verpackung | Eine vergleichbare Schnittstelle ist in vorhanden java.lang Paket. |
Eine Komparatorschnittstelle ist vorhanden java.util Paket. |
| Logik des Sortierens | Die Sortierlogik muss in derselben Klasse liegen wie das Objekt, das Sie sortieren mรถchten. | Die Sortierlogik sollte in separaten Klassen erfolgen, um unterschiedliche Sortierungen basierend auf unterschiedlichen Objektattributen zu schreiben. |
| Klassenobjekt | Die Klasse, deren Objekte Sie sortieren mรถchten, muss die Comparable-Schnittstelle implementieren. | Eine Klasse, deren Objekte Sie sortieren mรถchten, muss keine Komparatorschnittstelle implementieren. |
| Reihenfolgen sortieren | Es bietet einzelne Sortierreihenfolgen. | Es bietet mehrere Sortierfolgen. |
| Sortierreihenfolge | Mit dieser Methode kรถnnen die Daten gemรคร der natรผrlichen Sortierreihenfolge sortiert werden. | Diese Methode sortiert die Daten entsprechend der benutzerdefinierten Sortierreihenfolge. |
| Klasse | Es betrifft die ursprรผngliche Klasse. Das heiรt, die tatsรคchliche Klasse wird geรคndert. | Es wirkt sich nicht auf die ursprรผngliche Klasse aus, dh die tatsรคchliche Klasse wird nicht verรคndert. |
| Anwendungsbereich | Wird hรคufig in der API nach Kalender, Wrapper-Klassen, Datum usw. implementiert String |
Es ist implementiert, um Instanzen von Klassen von Drittanbietern zu sortieren. |
| Implementierung | Alle Wrapper-Klassen und String-Klassen implementieren vergleichbare Schnittstellen. | Die einzigen implementierten Klassen von Comparator sind Collator und RuleBasedColator. |
Best Practices bei der Verwendung von Comparator und Comparable in Java
- Verwenden Sie eine vergleichbare Schnittstelle, wenn der Vergleich fรผr die jeweilige Klasse Standard ist.
- Sie kรถnnen Lambdas mit einem Komparator verwenden.
- Viele der verfรผgbaren Kernklassen implementieren eine vergleichbare Schnittstelle.
- Es ist mรถglich, TreeSet und TreeMap beim Sortieren von Set oder Map zu verwenden.
- Das
compareTo()Die Methode funktioniert sowohl mit Komparatoren als auch mit Vergleichsmethoden. - Verwenden Sie die Komparatorschnittstelle nur, wenn Sie < mehr Flexibilitรคt benรถtigen.
- Das
compareTo()Die Methode gibt eine positive Ganzzahl zurรผck, wenn das erste Objekt grรถรer als das andere ist, negativ, wenn es kleiner ist, und Null, wenn beide gleich sind.
So wรคhlen Sie zwischen einem Vergleichsobjekt und einem Komparator
Zusammenfassend lรคsst sich sagen, dass meine praktische Erfahrung zeigt, dass die Nutzung von Comparable und Comparator in Java erhรถht unsere Kontrolle รผber die Datensortierung erheblich und verbessert sowohl Leistung als auch Funktionalitรคt.
