Skirtumas tarp palyginamojo ir palyginamojo „Java“

Autorius: Laura McKinney
Kūrybos Data: 1 Balandis 2021
Atnaujinimo Data: 14 Gegužė 2024
Anonim
Differences between Comparable and Comparator
Video.: Differences between Comparable and Comparator

Turinys

„Comparable“ ir „Comparator“ yra bendrosios „Java“ sąsajos, naudojamos objektų duomenų elementams lyginti. Palyginamoji sąsaja yra pakete „java.lang“, o lyginamoji sąsaja yra pakete „java.util“. Pagrindinis skirtumas tarp lyginamosios ir lyginamosios sąsajų yra tas, kad palyginamojoje sąsajoje yra viena rūšiavimo seka, tuo tarpu lyginamojoje sąsajoje pateikiamos kelios rūšiavimo sekos. Tarp palyginamosios ir lyginamosios sąsajos yra keletas kitų skirtumų, kuriuos nagrinėsime palyginimo diagramoje.


  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Išvada

Palyginimo diagrama

Palyginimo pagrindasPalyginamasKomparatorius
Pagrindinis Palyginamoji sąsaja leidžia atlikti tik vieną rūšiavimo seką.Komparatoriaus sąsaja leidžia atlikti kelias rūšiavimo sekas.
Pakuotės Palyginamoji sąsaja yra pakete „java.lang“.„Comparator“ sąsaja yra pakete „java.util“.
Metodai Palyginamojoje sąsajoje yra tik vienas metodas
public int palygintiTo (objektas obj);
Komparatoriaus sąsajoje yra du būdai
viešai palyginti (objektas obj1, objektas obj2)
Boolean equals (Objektas obj)
ĮgyvendinimasPalyginamą sąsają įgyvendina klasė, kurios objektai turi būti lyginami.Lyginamąją sąsają spektaklio klasė įgyvendina vietoje klasės, kurios objektai turi būti lyginami.
Palyginimas Metodas „palygintiTo“ (Object obj) lygina objektą, kuris naudojamas metodui iškviesti, su nurodytu objektu, pereina į metodą.Palyginimo (Object obj1, Object obj2) metodas lygina abu nurodytus objektus, kurie perduodami metodui.
Sąrašas / masyvasKai reikia palyginti palyginamojo tipo objekto sąrašą, „Class“ kolekcija pateikia metodą, t.y. „Collections.sort“ (sąrašas lst).Kai reikia palyginti palyginamojo tipo objektų sąrašą, „Collection“ klasė pateikia metodą, t.
Kolekcijos.sortas (sąrašas, palyginėjas).


Palyginamojo apibrėžimas

Palyginamas yra sąsaja, kurią galima rasti „java.lang“ pakete. Klasė įgyvendina komparatoriaus sąsają, kad galėtų rūšiuoti savo objektą natūralia tvarka. Objektai rūšiuojami natūralia tvarka, tai reiškia, kad objektai yra lyginami pagal jų ASCII reikšmes. Klasės, kuriose įgyvendinama palyginamoji sąsaja, yra baitų, simbolių, dvigubų, slankiųjų, ilgųjų, trumpųjų, styginių ir sveikųjų klasių klasės. Net „Data ir kalendorius“ klasė taip pat įgyvendina palyginamąją sąsają.

Palyginamojoje sąsajoje yra tik vienas metodas, kuris yra „CompareTo“ („Object obj“). Šis metodas lygina objektą, naudojamą metodui iškviesti, su parametru nurodytu objektu. Metodo sintaksė yra tokia:

public int palygintiTo (objektas obj);

„ReturnTo“ (Object obj) metodo grąžinimas 0, kai abiejuose metodu palygintuose objektuose yra ta pati reikšmė, jis grąžina -ve reikšmė, jei kviečiamas objektas yra mažesnis nei nurodytas objektas, ir grįžta + ve vertė, jei kviečiančio objekto vertė yra didesnė, palyginti su nurodytu objektu. „Kolekcijų“ klasėje pateikiamas rūšiavimo metodas sąrašo elementams rūšiuoti. Palyginamojo tipo sąrašo (ir masyvo) elementus galima rūšiuoti naudojant metodą „Collections.sort (List lst)“.


Komparatoriaus apibrėžimas

„Comparator“ yra sąsaja, kurią galima rasti „java.util“ pakete. Sąsaja „Komparatorius“ nėra įgyvendinama toje klasėje, kurios objektai turi būti lyginami, o atskira klasė įgyvendina „Comparator“ sąsają taip, kad rūšiavimo logika būtų taikoma kiekvienam objekto duomenų elementui skirtingoje klasėje. Komparatoriuje yra šie du būdai:

viešai palyginti (objektas obj1, objektas obj2) ir loginės lygios (objektas obj)

Aukščiau pateiktas palyginimo () metodas lygina pirmąjį objektą obj1, o antrąjį - obj2. Palyginti () metodas grąžina 0 kai abiejuose metodu lyginamuose objektuose yra ta pati reikšmė, jie grįžta -ve reikšmė, jei objektas obj1 yra mažesnis nei tada objektas obj2 ir grįžta + ve reikšmė, jei objektas obj1 turi didesnę vertę, palyginti su objektu obj2. Equals () metodai patikrina, ar nurodytas objektas yra lygus kviečiančiam objektui. Equals () metodo grąža tiesa jei abu palyginami objektai yra lygūs, jis grįžta melagingas. Kolekcija „Kolekcija“ pateikia sąrašo ir palyginamojo tipo elementų rūšiavimo metodą. Palyginamųjų tipų sąrašo elementai yra rūšiuojami metodu „Collections.sort“ (sąrašas, komparatorius).

  1. Palyginamoji sąsaja leidžia atlikti vieną rūšiavimo seką, tai reiškia, kad galite palyginti tik atskirus objekto duomenų elementus, naudojant „palygintiTo ()“ metodą, kita vertus, komparatoriaus sąsaja leidžia atlikti kelias rūšiavimo sekas, tai reiškia, kad galite palyginti kelis objekto duomenų elementus.
  2. Palyginamąją sąsają įgyvendina klasė, kurios objektai turi būti lyginami, nes rūšiavimo logika yra apibrėžta tos pačios klasės viduje. Kita vertus, klasterio, kurio objektai turi būti lyginami, komparatoriaus sąsajos neįgyvendina, nes rūšiavimo logika yra apibrėžta atskirose klasėse, kur kiekviena klasė apibrėžia rūšiavimą viename objekto duomenų elemente, o šios apibrėžiančios klasės įgyvendina komparatoriaus sąsają. .
  3. Palyginamoji sąsaja yra pakete „java.lang“, tuo tarpu lyginamojo sąsaja yra paketo „java.util“ viduje.
  4. Palyginamoji sąsaja deklaruoja tik vieną palyginimo metodą (Object obj), tuo tarpu komparatoriaus sąsaja deklaruoja du metodus, kurie yra, palyginti (Object obj1, Object obj2) ir lygiaverčiai (Object obj).
  5. Metodas „palygintiTo“ („Object obj“) palyginamuoju būdu lygina objektą iškviečiantį metodą, perduodamą metodui, o palyginimo („Object obj1“, „Object obj2“) metodas lygina objektus obj1 su obj2, kurie perduodami šiam metodui.
  6. Kolekcija „Kolekcijos“ pateikia rūšiavimo metodą „Collections.sort (sąrašas lst)“, kad būtų galima rūšiuoti palyginamojo tipo objektus. Kolekcija „Kolekcijos“ pateikia rūšiavimo metodą „Collections.sort“ (sąrašas, komparatorius), kad būtų galima rūšiuoti komparatoriaus tipo objektus.

Išvada:

Jei norite rūšiuoti objektus natūralia tvarka, tada galite naudoti palyginamąją sąsają, kurią norite rūšiuoti pagal bet kurį požymį, tada naudojama komparatoriaus sąsaja.