Was ist in Java vergleichbar?
In Java vergleichbar ist ein Objekt, das sich mit einem anderen Objekt vergleichen kann. Es ist hilfreich, die Liste der benutzerdefinierten Objekte zu sortieren. Die Schnittstelle java.lang.Comparable sollte von einer Klasse implementiert werden, um ihre Instanzen zu vergleichen. Ein Array von Objekten, die eine vergleichbare Schnittstelle implementieren, wird automatisch nach den Methoden Arrays.sort und Collections.sort sortiert.
In diesem Tutorial zu Comparator vs Comparable in Java lernen Sie Folgendes:
- Was ist in Java vergleichbar?
- Was ist Comparator in Java?
- Methode verwendet in Vergleichbar:
- Im Komparator verwendete Methode:
- Unterschied zwischen Comparable und Comparator in Java
- Best Practices bei der Verwendung von Comparator und Comparable in Java
Was ist Comparator in Java?
Der Komparator in Java ist ein Objekt zum Vergleichen verschiedener Objekte verschiedener Klassen. Die Komparatorschnittstelle in Java wird auch verwendet, um die Objekte benutzerdefinierter Klassen anzuordnen. Es enthält zwei wichtige Komparatorschnittstellenmethoden, die als compare (Object obj1, Object obj2) und equals (Object element) bekannt sind.
WICHTIGE UNTERSCHIEDE:
- Comparable bietet die compareTo () -Methode zum Sortieren von Elementen in Java, während Comparator die compare () -Methode zum Sortieren von Elementen in Java bereitstellt.
- Eine vergleichbare Schnittstelle ist im Paket java.lang vorhanden, während die Schnittstelle Comparator im Paket java.util vorhanden ist.
- Comparable bietet eine einzelne Sortiersequenz, während Comparator mehrere Sortiersequenzen bereitstellt.
- Vergleichbar wirkt sich auf die ursprüngliche Klasse aus, während der Vergleicher die ursprüngliche Klasse nicht beeinflusst.
Methode verwendet in Vergleichbar:
Das Folgende ist eine wichtige Methode, die in der Schnittstelle "Vergleichbar" verwendet wird:
Vergleichen mit():
Die CompareTo () -Methode wird verwendet, um eine natürliche Sortierung für Zeichenfolgen durchzuführen. Die Bedeutung der natürlichen Sortierung ist die Sortierreihenfolge, die für das Objekt gilt, z. B. die numerische Reihenfolge zum Sortieren von Ganzzahlen, die alphabetische Reihenfolge für Zeichenfolgen usw.
Die Syntax der CompareTo () -Methode lautet wie folgt:
int compareTo(T obj)
In der obigen Syntax bezeichnet T den Typ der Objekte, die Sie vergleichen möchten.
Die CompareTo () -Methode vergleicht das Objekt mit T obj.
Ausgabe:
- Es gibt 0 zurück, wenn die Werte gleich sind.
- Wenn das Objekt einen geringeren 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.
Beispiel für eine CompareTo () -Methode:
Das folgende Java-Vergleichsprogramm zeigt den Vergleich zweier Zeichen, "a" und "b". Das Zeichen "a" steht alphabetisch 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 äquivalent. 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"));}}
Ausgabe
Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0
Im Komparator verwendete Methode:
Im Folgenden sind die wichtigen Methoden aufgeführt, die in der Komparatorschnittstelle verwendet werden:
Vergleichen Sie():
Mit Compare () können Sie Objekte bestellen. Dazu müssen Sie eine Klasse erstellen, die die Komparatorschnittstelle implementiert. Danach müssen Sie die Vergleichsmethode überschreiben.
Die Syntax der compare () -Methode lautet wie folgt:
compare(Object obj1, Object obj2)
In der obigen Syntax sind obj1 und obj2 zwei Objekte, die Sie mit der compare () -Methode vergleichen müssen.
Ausgabe:
- Es wird eine negative Ganzzahl zurückgegeben, wenn das erste Argument kleiner als das zweite ist.
- Gibt Null zurück, wenn das erste 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 ((vergleiche (a, b)> 0) && (vergleiche (b, c)> 0)) was impliziert, vergleiche (a, c)> 0.
Beispiel für eine Vergleichsmethode:
Im folgenden Programm des Java-Komparatorbeispiels gibt es 6 Variablen. "x", "y", "p", "q", "r" und "s". Die Ausgabe ist -1 als Wert von "x", 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 zeroSystem.out.println(Integer.compare(x, y));int p = 40;int q = 40;// as 30 equals 30,// Output will be zeroSystem.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 zeroSystem.out.println(Integer.compare(r, s));}}
Ausgabe:
-101
Gleich ():
Equals () überprüft, ob das Zahlenobjekt dem Objekt entspricht, das als Argument übergeben wird oder nicht.
Die Syntax der equals () -Methode lautet wie folgt:
public boolean equals (Objekt o)
Diese Methode verwendet zwei Parameter: 1) ein beliebiges Objekt 2) einen Rückgabewert. Es gibt true zurück, wenn das übergebene Argument nicht null ist und ein Objekt des ähnlichen Typs mit demselben numerischen Wert ist.
Gleiches Methodenbeispiel:
Im folgenden Beispiel vergleichen wir 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 ist, nicht gleich dem Wert von q ist, der 20 ist.
Das zweite Ergebnis ist wahr, weil der Wert der Variablen p und r der gleiche ist, nämlich 5. Schließlich ist die Ausgabe falsch, da die Variablen p und s unterschiedliche zugewiesene Werte haben.
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));}}
Ausgabe
falsetruefalse
Unterschied zwischen Comparable und Comparator in Java

Unterschied zwischen Comparable und Comparator in Java
Hier sind die Hauptunterschiede zwischen Java Comparable und Comparator:
Vergleichbar | Komparator |
Comparable bietet die compareTo () -Methode zum Sortieren von Elementen in Java. | Comparator bietet eine compare () -Methode zum Sortieren von Elementen in Java. |
Eine vergleichbare Schnittstelle ist im Paket java.lang vorhanden. | Die Komparatorschnittstelle ist im Paket java.util vorhanden. |
Die Sortierlogik muss sich in derselben Klasse befinden, deren Objekt Sie sortieren möchten. | Die Logik der Sortierung sollte in einer separaten Klasse sein, um unterschiedliche Sortierungen basierend auf unterschiedlichen Attributen von Objekten zu schreiben. |
Die Klasse, deren Objekte Sie sortieren möchten, muss eine vergleichbare Schnittstelle implementieren. | Die Klasse, deren Objekte Sie sortieren möchten, muss keine Komparatorschnittstelle implementieren. |
Es bietet einzelne Sortiersequenzen. | Es bietet mehrere Sortiersequenzen. |
Diese Methode kann die Daten gemäß der natürlichen Sortierreihenfolge sortieren. | Diese Methode sortiert die Daten gemäß der benutzerdefinierten Sortierreihenfolge. |
Dies betrifft die ursprüngliche Klasse. dh die tatsächliche Klasse wird geändert. | Dies wirkt sich nicht auf die ursprüngliche Klasse aus, dh die tatsächliche Klasse wird nicht geändert. |
Wird häufig in der API implementiert von: Kalender, Wrapper-Klassen, Datum und Zeichenfolge. | Es wird implementiert, um Instanzen von Klassen von Drittanbietern zu sortieren. |
Alle Wrapper-Klassen und String-Klassen implementieren eine vergleichbare Schnittstelle. | 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 Kernklassen, die in implementiert sind, implementieren eine vergleichbare Schnittstelle.
- Es ist möglich, TreeSet und TreeMap zu verwenden oder Set oder Map zu sortieren.
- Die compareTo () -Methode funktioniert sowohl mit Komparatoren als auch mit vergleichbaren.
- Verwenden Sie die Komparatorschnittstelle nur, wenn Sie
- Die compareTo () -Methode gibt eine positive Ganzzahl zurück, wenn das erste Objekt größer als das andere ist, eine negative Ganzzahl, wenn es niedriger ist, und Null, wenn beide gleich sind.