Unterschied zwischen Comparable und Comparator in Java

Autor: Laura McKinney
Erstelldatum: 1 April 2021
Aktualisierungsdatum: 10 Kann 2024
Anonim
Interview Question | Comparable vs Comparator in Java
Video: Interview Question | Comparable vs Comparator in Java

Inhalt

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


  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

Grundlage für den VergleichVergleichbarKomparator
Basic Die Schnittstelle Comparable erlaubt nur eine Sortierreihenfolge.Die Comparator-Oberfläche ermöglicht mehrere Sortierfolgen.
Pakete Die Schnittstelle Comparable ist im Paket java.lang enthalten.Die Comparator-Schnittstelle ist im Paket java.util enthalten.
Methoden Die Comparable-Schnittstelle enthält nur eine einzige Methode
public int compareTo (Object obj);
Die Comparator-Schnittstelle enthält zwei Methoden
public int compare (Objekt obj1, Objekt obj2)
Boolescher Wert gleich (Object obj)
ImplementierungEine vergleichbare Schnittstelle wird von der Klasse implementiert, deren Objekte verglichen werden sollen.Die Comparator-Schnittstelle wird von einer separaten Klasse anstelle der Klasse implementiert, deren Objekte verglichen werden sollen.
Vergleich Die compareTo (Object obj) -Methode vergleicht das Objekt, mit dem die Methode aufgerufen wird, mit den angegebenen Objektübergaben an die Methode.Die compare-Methode (Object obj1, Object obj2) vergleicht die beiden angegebenen Objekte, die an die Methode übergeben werden.
Liste / ArrayWenn eine Liste des Objekts des vergleichbaren Typs verglichen werden muss, stellt die Collection-Klasse eine Methode bereit, d. H. Collections.sort (List lst).Wenn eine Liste von Objekten des vergleichbaren Typs verglichen werden muss, stellt die Collection-Klasse eine Methode bereit, d.h.
Collections.sort (Liste, Vergleicher).


Definition von Vergleichbar

Vergleichbar 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 mit ihren ASCII-Werten verglichen. Die Klassen, die die Schnittstelle Comparable implementieren, sind die Klassen Byte, Character, Double, Float, Long, Short, String und Integer. Sogar die Date- und Calander-Klasse implementiert auch die Comparable-Schnittstelle.

Die Comparable-Schnittstelle enthält nur eine Methode, CompareTo (Object obj). 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 zurück 0Wenn beide von der Methode verglichenen Objekte denselben Wert enthalten, wird zurückgegeben -ve value, wenn das aufrufende Objekt kleiner als das angegebene Objekt ist und zurückgegeben wird + ve value, wenn das aufrufende Objekt im Vergleich zum angegebenen Objekt einen höheren Wert aufweist. Die Collections-Klasse bietet eine Sortiermethode zum Sortieren der Elemente der Liste. Die Elemente list (und array) des Typs Comparable 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. Die Schnittstelle Comparator ist nicht in der Klasse implementiert, deren Objekte verglichen werden sollen. Stattdessen implementiert eine separate Klasse die Schnittstelle Comparator, sodass die Sortierlogik auf jedes Datenelement des Objekts in einer anderen Klasse angewendet wird. Der Komparator enthält zwei Methoden:

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

Die obige compare () -Methode vergleicht das erste Objekt obj1 mit dem zweiten Objekt obj2. Die compare () -Methode gibt zurück 0 Wenn beide von der Methode verglichenen Objekte denselben Wert enthalten, wird zurückgegeben -ve value wenn das Objekt obj1 kleiner ist als das Objekt obj2 und returniert + ve value, wenn das Objekt obj1 im Vergleich zum Objekt obj2 einen höheren Wert hat. Die equals () -Methode prüft, ob das angegebene Objekt dem aufrufenden Objekt entspricht. Die Methode equals () gibt zurück wahr Wenn die beiden verglichenen Objekte gleich sind, wird zurückgegeben falsch. Die Collections-Klasse bietet die Methode zum Sortieren der Elemente von Liste und Vergleichstyp. Die Listenelemente der Vergleichstypen werden nach der Methode Collections.sort (List, Comparator) sortiert.

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

Fazit:

Wenn Sie die Objekte in der natürlichen Reihenfolge sortieren möchten, können Sie die vergleichbare Schnittstelle verwenden, ansonsten möchten Sie die Objekte basierend auf einem beliebigen Attribut sortieren. Dann wird die Comparator-Schnittstelle verwendet.