Odporúčaná, 2024

Redakcia Choice

Rozdiel medzi porovnateľným a porovnávateľom v jazyku Java

Porovnateľné a porovnávacie sú obojstranné rozhrania v jazyku Java, ktoré sa používajú na porovnávanie dátových prvkov objektov. Porovnateľné rozhranie sa nachádza v balíku java.lang a rozhranie Comparator sa nachádza v balíku java.util. Základný rozdiel medzi porovnateľnými a porovnávacími rozhraniami spočíva v tom, že porovnateľné rozhranie poskytuje jednotnú sekvenciu triedenia, zatiaľ čo porovnávacie rozhranie poskytuje viacnásobné triediace sekvencie. Existujú aj iné rozdiely medzi porovnateľným a porovnávacím rozhraním, ktoré budeme študovať v porovnávacej tabuľke.

Porovnávacia tabuľka

Základ pre porovnanieporovnateľnýkomparátor
základnéPorovnateľné rozhranie umožňuje iba jednu sekvenciu triedenia.Rozhranie komparátora umožňuje viaceré sekvencie triedenia.
balíčkyPorovnateľné rozhranie je prítomné v balíku java.lang.Porovnávacie rozhranie sa nachádza v balíku java.util.
metódyPorovnateľné rozhranie obsahuje iba jednu metódu
public int compareTo (Object obj);
Rozhranie komparátora obsahuje dve metódy
public int porovnať (Object obj1, Object obj2)
boolean sa rovná (Object obj)
uskutočneniePorovnateľné rozhranie je implementované triedou, ktorej objekty sa majú porovnávať.Porovnávacie rozhranie je implementované triedou spermatu namiesto triedy, ktorej objekty sa majú porovnávať.
PorovnanieMetóda compareTo (Object obj) porovnáva objekt, ktorý sa používa na vyvolanie metódy so zadaným objektom, ktorý prechádza na metódu.Porovnať (Object obj1, Object obj2) metóda porovná oba špecifikované objekty, ktoré sú odovzdané metódy.
List / ArrayKeď sa porovnáva zoznam objektov porovnateľného typu, trieda Zbierka poskytuje metódu, tj Collections.sort (List lst).Keď sa porovnáva zoznam objektov porovnateľného typu, trieda Zbierka poskytuje metódu, tj
Collections.sort (zoznam, komparátor).

Definícia porovnateľnej

Porovnateľné je rozhranie, ktoré je k dispozícii v balíku java.lang. Trieda implementuje rozhranie komparátora a usporiada svoj objekt v prirodzenom poradí. Objekty sú zoradené v prirodzenom poradí znamená, že objekty sú porovnávané ich hodnotami ASCII. Triedy, ktoré implementujú porovnateľné rozhranie, sú triedy Byte, Character, Double, Float, Long, Short, String a Integer. Dokonca aj trieda Date and Calander implementuje porovnateľné rozhranie.

Porovnateľné rozhranie obsahuje iba jednu metódu porovnávaciu (Object obj). Táto metóda porovnáva objekt použitý na vyvolanie metódy s objektom špecifikovaným v parametri. Syntax metódy je nasledovný:

 public int compareTo (Object obj); 

Metóda CompareTo (Object obj) vracia 0, keď porovnávaný objekt metódou obsahuje rovnakú hodnotu, vracia hodnotu -v, ak je vyvolávací objekt menší ako zadaný objekt a vráti hodnotu + ve, ak má vyvolávací objekt väčší hodnota v porovnaní so špecifikovaným objektom. Trieda kolekcií poskytuje triedu metódu triedenia prvkov zoznamu. Elementy zoznamu (a pole) porovnateľného typu je možné triediť pomocou metódy "Collections.sort (List lst)".

Definícia porovnávača

Comparator je rozhranie, ktoré je k dispozícii v balíku java.util. Komparátor rozhrania nie je implementovaný v triede, ktorej objekty sa majú porovnávať, namiesto toho trieda implementuje rozhranie komparátora tak, aby sa triediaca logika aplikovala na každý dátový prvok objektu v inej triede. Komparátor obsahuje dve metódy:

 verejné int porovnanie (Object obj1, Object obj2) a booleovské rovno (Object obj) 

Metóda porovnať () porovnáva prvý objekt obj1 s druhým objektom obj2. Metóda porovnania () vracia 0, ak oba objekt porovnaný metódou obsahuje rovnakú hodnotu, vráti hodnotu -ve, ak je objekt obj1 menší ako objekt obj2 a vráti hodnotu + ve, ak objekt obj1 má vyššiu hodnotu v porovnaní k objektu obj2. Metóda Equals () kontroluje, či sa daný objekt rovná vyvolávaciemu objektu. Metóda equal () sa vracia true, ak oba porovnané objekty sú rovnaké, inak vráti falošný . Trieda Zbierky poskytuje metódu triedenia prvkov zoznamu a typu komparátora. Zoznamy prvkov komparátorov sú zoradené podľa metódy Collections.sort (List, Comparator).

Kľúčové rozdiely medzi porovnateľnými a porovnávacimi

  1. Porovnateľné rozhranie umožňuje jednoduchú sekvenciu triedenia, čo znamená, že môžete porovnať iba jediný dátový prvok objektu v metóde compareTo () na druhej strane Porovnávacie rozhranie umožňuje viac triedených sekvencií, čo znamená, že môžete porovnať viacero dátových prvkov objektu.
  2. Porovnateľné rozhranie je implementované triedou, ktorej objekty sa majú porovnávať, pretože logika triedenia je definovaná v rámci tej istej triedy. Na druhej strane porovnávacie rozhranie nie je implementované triedou, ktorej objekty sa majú porovnávať, pretože triediaca logika je definovaná v samostatných triedach, kde každá trieda definuje triedenie na jedinom dátovom prvku objektu a tieto definujúce triedy implementujú rozhranie komparátora,
  3. Porovnateľné rozhranie leží vo vnútri balíka java.lang, zatiaľ čo rozhranie Comparator leží vo vnútri balíka java.util.
  4. Porovnateľné rozhranie deklaruje iba jednu metódu, ktorá je compareTo (Object obj), zatiaľ čo porovnávacie rozhranie deklaruje dve metódy, ktoré porovnávajú (Object obj1, Object obj2) a rovnajú sa (Object obj).
  5. Metóda compareTo (Object obj) v porovnateľnej metóde porovnáva metódu vyvolávajúcu objekt so zadaným objektom preneseným na metódu, zatiaľ čo porovnávacia (Object obj1, Object obj2) metóda komparátora porovnáva objekty obj1 s obj2, ktoré prechádzajú do metódy.
  6. Trieda kolekcií poskytuje metódu triedenia "Collections.sort (List lst)" na zoradenie objektov porovnateľného typu. Trieda Zbierky poskytuje metódu triedenia Collections.sort (List, Comparator) na triedenie objektov typu Comparator.

záver:

Ak chcete triediť objekty v prirodzenom usporiadaní, potom môžete použiť porovnateľné rozhranie, ktoré chcete triediť na základe akéhokoľvek atribútu, potom sa používa rozhranie Comparator.

Top