Doporučená, 2021

Redakce Choice

Rozdíl mezi srovnatelným a komparátorem v Javě

Srovnatelný a srovnávací oba jsou obecná rozhraní v Javě pro porovnání datových prvků objektů. Srovnatelné rozhraní je k dispozici v balíčku java.lang a rozhraní komparátoru je obsaženo v balíčku java.util. Základní rozdíl mezi rozhraními Comparable a Comparator spočívá v tom, že srovnatelné rozhraní poskytuje jedinou sekvenci řazení, zatímco rozhraní Comparator poskytuje více třídících sekvencí. Existují některé další rozdíly mezi rozhraním Comparable a Comparator, které budeme studovat v tabulce porovnání.

Srovnávací graf

Základ pro porovnáníSrovnatelnýKomparátor
ZákladníSrovnatelné rozhraní umožňuje pouze jednu třídicí posloupnost.Rozhraní komparátoru umožňuje vícenásobné řazení.
BalíčkySrovnatelné rozhraní je obsaženo v balíčku java.lang.Rozhraní Comparator je obsaženo v balíčku java.util.
MetodySrovnatelné rozhraní obsahuje pouze jednu metodu
public int compareTo (Object obj);
Rozhraní Comparator obsahuje dvě metody
public int compare (Object obj1, Object obj2)
boolean se rovná (Object obj)
ImplementaceSrovnatelné rozhraní je implementováno třídou, jejíž objekty mají být porovnávány.Rozhraní komparátoru je místo toho implementováno třídou sperate do třídy, jejíž objekty mají být porovnávány.
SrovnáníMetoda compareTo (Object obj) porovnává objekt, který se používá k vyvolání metody se zadaným objektem, předanou do metody.Porovnání (Object obj1, Object obj2) metoda porovnat oba zadané objekty, které jsou předány metodě.
Seznam / polePokud je třeba porovnat seznam objektů typu Kompatibilní, třída Třída poskytuje metodu, tj. Collection.sort (List lst).Pokud musí být porovnán seznam objektů porovnatelného typu, třída kolekce poskytuje metodu, tj
Collections.sort (Seznam, Komparátor).

Definice srovnatelné

Porovnatelné je rozhraní, které je k dispozici v balíčku java.lang. Třída implementuje rozhraní Comparator pro třídění objektů v přirozeném pořadí. Objekty jsou seřazeny v přirozeném pořadí, což znamená, že objekty jsou porovnány podle hodnot ASCII. Třídy, které implementují srovnatelné rozhraní jsou třídy Byte, Character, Double, Float, Long, Short, String a Integer. Dokonce třída Date a Calander také implementuje srovnatelné rozhraní.

Porovnatelné rozhraní obsahuje pouze jednu metodu, která je CompareTo (Object obj). Tato metoda porovnává objekt použitý k vyvolání metody s objektem uvedeným v parametru. Syntaxe metody je následující:

 public int compareTo (Object obj); 

Metoda CompareTo (Object obj) vrátí hodnotu 0, když objekt porovnaný metodou obsahuje stejnou hodnotu, vrátí hodnotu -ve, pokud je objekt vyvolání menší než zadaný objekt a vrátí hodnotu + ve v případě, že objekt vyvolání má větší hodnotu Třída kolekce poskytuje metodu třídění pro třídění prvků seznamu. Prvky seznamu (a pole) srovnatelného typu lze třídit metodou „Collections.sort (List lst)“.

Definice komparátoru

Comparator je rozhraní, které je dostupné v balíčku java.util. Rozhraní Comparator není implementováno ve třídě, jejíž objekty mají být porovnávány, místo toho samostatná třída implementuje rozhraní Comparator, takže logika řazení je aplikována na každý datový prvek objektu v jiné třídě. Komparátor obsahuje dvě metody:

 public int compare (Object obj1, Object obj2) a boolean se rovná (Object obj) 

Metoda Compare () výše porovnává první objekt obj1 s druhým objektem obj2. Metoda compare () vrátí hodnotu 0, když oba objekty porovnávané metodou obsahují stejnou hodnotu, vrátí hodnotu -ve, pokud je objekt obj1 menší než objekt obj2 a vrátí hodnotu + ve skutečnosti, pokud objekt obj1 má větší hodnotu ve srovnání objektu obj2. Metody equals () kontrolují, zda je zadaný objekt roven objektu vyvolání. Metoda equals () vrátí hodnotu true, pokud jsou oba porovnávané objekty stejné, jinak vrátí hodnotu false . Třída Sbírky poskytuje metodu pro třídění prvků seznamu a typu komparátoru. Prvky seznamu typů komparátorů jsou seřazeny podle metody Collections.sort (List, Comparator).

Rozdíly mezi srovnatelnými a srovnávacími

  1. Porovnatelné rozhraní umožňuje jedinou sekvenci řazení, což znamená, že můžete porovnat pouze jeden datový prvek objektu v metodě compareTo () na druhé straně.
  2. Porovnatelné rozhraní je implementováno třídou, jejíž objekty mají být porovnávány, protože logika řazení je definována uvnitř stejné třídy. Na druhou stranu rozhraní Comparator není implementováno třídou, jejíž objekty mají být porovnávány, protože logika řazení je definována v samostatných třídách, kde každá třída definuje třídění na jediném datovém prvku objektu a tyto definující třídy implementují rozhraní Comparator .
  3. Srovnatelné rozhraní leží uvnitř balíku java.lang, zatímco rozhraní Comparator leží uvnitř balíku java.util.
  4. Rozhraní Comparable deklaruje pouze jednu metodu, která je compareTo (Object obj), zatímco rozhraní Comparator deklaruje dvě metody, které jsou porovnány (Object obj1, Object obj2) a equals (Object obj).
  5. Metoda compareTo (Object obj) ve srovnatelném porovnává metodu vyvolávající objekt se zadaným objektem předanou metodě, zatímco metoda porovnání (Object obj1, Object obj2) Comparator porovnává objekty obj1 s obj2, které jsou předány metodě.
  6. Třída Collections poskytuje metodu třídění „Collections.sort (List lst)“ pro třídění objektů typu Comparable. Třída Sbírky poskytuje metodu třídění Collections.sort (List, Comparator) pro třídění objektů typu Comparator.

Závěr:

Pokud chcete objekty třídit v přirozeném uspořádání, pak můžete použít srovnatelné rozhraní, které chcete třídit na základě libovolného atributu a pak použít rozhraní Comparator.

Top