Empfohlen, 2024

Tipp Der Redaktion

Unterschied zwischen vergleichbarem und Komparator in Java

Comparable und Comparator sind die generischen Schnittstellen in Java, mit denen die Datenelemente der Objekte verglichen werden. Die Comparable-Schnittstelle ist im Paket java.lang und die Comparator-Schnittstelle im Paket java.util enthalten. Der grundlegende Unterschied zwischen den Schnittstellen "Comparable" und "Comparator" besteht darin, dass die Schnittstelle "Comparable" die einzelne Sortierungssequenz bereitstellt, während die Comparator-Schnittstelle mehrere Sortierungssequenzen bereitstellt. Es gibt einige andere Unterschiede zwischen der Vergleichsschnittstelle und der Vergleichsschnittstelle, die wir in der Vergleichstabelle untersuchen werden.

Vergleichstabelle

VergleichsgrundlageVergleichbarVergleicher
BasicDie Comparable-Schnittstelle erlaubt nur eine einzige Sortierreihenfolge.Die Comparator-Benutzeroberfläche ermöglicht mehrere Sortiersequenzen.
PaketeDie Comparable-Schnittstelle ist im Paket java.lang enthalten.Die Comparator-Schnittstelle ist im Paket java.util enthalten.
MethodenDie Comparable-Schnittstelle enthält nur eine Methode
public int compareTo (Object obj);
Die Comparator-Schnittstelle enthält zwei Methoden
public int compare (Objekt obj1, Objekt obj2)
boolean equals (Object obj)
ImplementierungEine vergleichbare Schnittstelle wird von der Klasse implementiert, deren Objekte verglichen werden sollen.Die Comparator-Schnittstelle wird von einer eigenen Klasse statt der Klasse implementiert, deren Objekte verglichen werden sollen.
VergleichDie Methode compareTo (Object obj) vergleicht das Objekt, das zum Aufrufen der Methode verwendet wird, mit den angegebenen Objektübergaben an die Methode.Die Methode compare (Object obj1, Object obj2) vergleicht die beiden angegebenen Objekte, die an die Methode übergeben werden.
Liste / ArrayWenn eine Liste des Objekts vom Typ Comparable verglichen werden muss, stellt die Collection-Klasse eine Methode bereit, z. B. Collections.sort (List lst).Wenn eine Liste von Objekten des Typs Comparable verglichen werden muss, stellt die Collection-Klasse eine Methode bereit
Collections.sort (Liste, Vergleicher).

Definition von vergleichbar

Comparable ist eine Schnittstelle, die im Paket java.lang verfügbar ist. Eine Klasse implementiert die Comparator-Schnittstelle, um ihr Objekt in natürlicher Reihenfolge zu sortieren. Die Objekte werden in natürlicher Reihenfolge sortiert, dh die Objekte werden anhand ihrer ASCII-Werte verglichen. Die Klassen, die die Comparable-Schnittstelle implementieren, sind die Klassen Byte, Character, Double, Float, Long, Short, String und Integer. Sogar die Date and Calander-Klasse implementiert die Comparable-Schnittstelle.

Die Comparable-Schnittstelle enthält nur eine Methode, die CompareTo (Object obj) ist. Diese Methode vergleicht das zum Aufrufen der Methode verwendete Objekt mit dem im Parameter angegebenen Objekt. Die Syntax der Methode lautet wie folgt:

 public int compareTo (Object obj); 

Die CompareTo (Object obj) -Methode gibt 0 zurück . Wenn beide Objekte, die von der Methode verglichen werden, denselben Wert enthalten, gibt sie den Wert -ve zurück, wenn das aufrufende Objekt kleiner als das angegebene Objekt ist, und + ve, wenn das aufrufende Objekt einen größeren Wert hat Wert im Vergleich zum angegebenen Objekt. Die Collections-Klasse stellt eine Sortiermethode zum Sortieren der Elemente der Liste bereit. Die Listen- (und Array-) Elemente des Typs "Vergleichbar" können mit der Methode "Collections.sort (List lst)" sortiert werden.

Definition von Komparator

Comparator ist eine Schnittstelle, die im Paket java.util verfügbar ist. Das Interface Comparator ist nicht in der Klasse implementiert, deren Objekte verglichen werden sollen. Stattdessen implementiert separate Class die Comparator-Schnittstelle, sodass die Sortierlogik auf jedes Datenelement des Objekts in einer anderen Klasse angewendet wird. Comparator enthält zwei Methoden wie folgt:

 public int compare (Objekt obj1, Objekt obj2) und boolean equals (Objekt obj) 

Die compare () - Methode oben vergleicht das erste Objekt obj1 mit dem zweiten Objekt obj2. Die Methode compare () gibt 0 zurück, wenn beide von der Methode verglichenen Objekte denselben Wert enthalten. Wenn das Objekt obj1 kleiner ist als das Objekt obj2, wird der Wert -ve zurückgegeben. Wenn das Objekt obj1 im Vergleich dazu einen höheren Wert aufweist, wird der Wert + ve zurückgegeben zum Objekt obj2. Die equals () -Methoden prüfen, ob das angegebene Objekt dem aufrufenden Objekt entspricht. Die equals () -Methode gibt true zurück, wenn beide verglichenen Objekte gleich sind, andernfalls wird false zurückgegeben . Die Collections-Klasse stellt die Methode zum Sortieren der Elemente von Liste und Vergleichstyp bereit. Die Listenelemente der Vergleichstypen werden nach der Methode Collections.sort (List, Comparator) sortiert.

Hauptunterschiede zwischen Vergleichbar und Vergleicher

  1. Die vergleichbare Schnittstelle ermöglicht eine einzige Sortierfolge, dh, Sie können nur ein einzelnes Datenelement des Objekts in der compareTo () -Methode vergleichen. Die Comparator-Schnittstelle ermöglicht jedoch mehrere Sortierfolgen, sodass Sie mehrere Datenelemente des Objekts vergleichen können.
  2. Die Comparable-Schnittstelle wird von der Klasse implementiert, deren Objekte verglichen werden sollen, da die Sortierlogik innerhalb derselben Klasse definiert ist. Auf der anderen Seite wird die Comparator-Schnittstelle nicht von der Klasse implementiert, deren Objekte verglichen werden sollen, da die Sortierlogik in den separaten Klassen definiert ist, wobei jede Klasse die Sortierung nach einem einzelnen Datenelement des Objekts definiert und diese definierenden Klassen die Comparator-Schnittstelle implementieren .
  3. Die Comparable-Schnittstelle befindet sich im Paket java.lang, während die Comparator-Schnittstelle im Paket java.util liegt.
  4. Die Comparable-Schnittstelle deklariert nur eine Methode, die compareTo (Object obj) ist, wohingegen die Comparator-Schnittstelle zwei Methoden deklariert, die compare (Object obj1, Object obj2) und equals (Object obj) sind.
  5. Die Methode compareTo (Object obj) in Comparable vergleicht die Methode, die das Objekt mit dem angegebenen Objekt aufruft, das an die Methode übergeben wird, während die Methode compare (Object obj1, Object obj2) von Comparator die Objekte obj1 mit obj2 vergleicht, die an die Methode übergeben werden.
  6. Die Klasse Collections bietet eine Sortiermethode "Collections.sort (List lst)", um die Objekte des Typs Comparable zu sortieren. Die Klasse Collections bietet die Sortiermethode Collections.sort (List, Comparator) zum Sortieren der Objekte des Comparator-Typs.

Fazit:

Wenn Sie die Objekte in der natürlichen Reihenfolge sortieren möchten, können Sie die vergleichbare Schnittstelle verwenden. Wenn Sie die Objekte nach Attributen sortieren möchten, wird die Comparator-Schnittstelle verwendet.

Top