Suositeltava, 2024

Toimituksen Valinta

Vertailukelpoinen ja vertaileva Java-ero

Vertailukelpoiset ja vertailevat molemmat ovat Java: n yleisiä rajapintoja, joita käytetään objektien dataelementtien vertaamiseen. Vertailukelpoinen käyttöliittymä on läsnä java.lang-paketissa ja Comparator-rajapinta on java.util-paketissa. Perusero vertailukelpoisten ja vertailevien rajapintojen välillä on, että vertailukelpoinen rajapinta tarjoaa yhden lajittelusekvenssin, kun taas Comparator-rajapinta tarjoaa useita lajittelusekvenssejä. Vertailukelpoisessa ja vertailevassa käyttöliittymässä on joitakin muita eroja, joita tutkimme vertailukartassa.

Vertailukaavio

Vertailun perusteetvertailukelpoinenvertailuryhmässä
perustiedotVertailukelpoinen rajapinta sallii vain yhden lajittelusekvenssin.Comparator-rajapinta sallii useita lajittelusekvenssejä.
paketitVertailukelpoinen käyttöliittymä on läsnä java.lang-paketissa.Comparator-liitäntä on java.util-paketissa.
menetelmätVertailukelpoinen käyttöliittymä sisältää vain yhden menetelmän
public int CompareTo (Object obj);
Comparator-rajapinnassa on kaksi menetelmää
julkinen vertailu (Object obj1, Object obj2)
boolean vastaa (Object obj)
täytäntöönpanoVertailukelpoinen rajapinta toteutetaan luokassa, jonka esineitä verrataan.Komparaattoriliitäntä toteutetaan huokosluokan avulla luokalle, jonka esineitä verrataan.
VertailuCompareTo (Object obj) -menetelmä vertaa objektia, jota käytetään menetelmän kutsumiseen määritetyn kohteen kanssa, menetelmään.Vertaa (Object obj1, Object obj2) -menetelmää verrataan molempia määriteltyjä objekteja, jotka on siirretty menetelmälle.
Lista / ArrayKun vertailukelpoisen tyypin objektin luetteloa on vertailtava, kokoelma-luokka tarjoaa menetelmän eli kokoelmat.sort (list lst).Kun vertailukelpoisen tyypin objektien luetteloa on vertailtava, kokoelma-luokka tarjoaa menetelmän eli
Collections.sort (luettelo, vertailija).

Määritelmä Vertailukelpoinen

Vertailukelpoinen on käyttöliittymä, joka on saatavilla java.lang-paketissa. Luokka toteuttaa Comparator-rajapinnan lajittelemaan kohteen luonnollisessa järjestyksessä. Esineet lajitellaan luonnollisessa järjestyksessä, mikä tarkoittaa, että esineitä verrataan niiden ASCII-arvoihin. Luokat, jotka toteuttavat vertailukelpoisen käyttöliittymän, ovat tavu, merkki, kaksinkertainen, kelluva, pitkä, lyhyt, merkkijono ja integer-luokat. Jopa Päivämäärä ja Calander-luokka toteuttaa myös vertailukelpoisen käyttöliittymän.

Vertailukelpoinen käyttöliittymä sisältää vain yhden menetelmän, joka on CompareTo (Object obj). Tämä menetelmä vertaa menetelmää kutsutun objektin parametrissa määritellyn objektin kanssa. Menetelmän syntaksi on seuraava:

 public int CompareTo (Object obj); 

CompareTo (Object obj) -menetelmän palautus 0, kun molemmat menetelmään verratut objektit sisältävät saman arvon, se palauttaa -ve- arvon, jos kutsuva kohde on pienempi kuin määritetty kohde ja palauttaa + ve- arvon, jos kutsuva kohde on suurempi arvo verrattuna määrättyyn kohteeseen.Kokoelmat-luokka tarjoaa lajittelutavan luettelon elementtien lajittelemiseksi. Vertailukelpoisen tyyppisen luettelon (ja taulukon) elementit voidaan lajitella menetelmällä ”Kokoelmat.sortti (Lista lst)”.

Määritelmä Comparator

Comparator on käyttöliittymä, joka on saatavilla java.util-paketissa. Rajapinnan Comparatoria ei toteuteta luokassa, jonka esineitä verrataan, vaan erillinen luokka toteuttaa Comparator-rajapinnan siten, että lajittelulogiikka soveltuu objektin jokaiselle dataelementille eri luokassa. Vertailija sisältää kaksi menetelmää seuraavasti:

 julkinen vertailu (Object obj1, Object obj2) ja boolean-arvo (Object obj) 

Yllä oleva vertailu () -menetelmä vertaa ensimmäistä objektia obj1 toisen objektin obj2 kanssa. Vertailu () -menetelmän palautus 0, kun molemmat menetelmän mukaiset kohteet sisältävät saman arvon, se palauttaa -ve- arvon, jos objekti obj1 on pienempi kuin objekti obj2 ja palauttaa + ve- arvon, jos kohde obj1: llä on suurempi arvo kuin objektilla obj1 on suurempi arvo verrattuna kohteeseen objekt2. Vastaavat () menetelmät tarkistavat, onko määrätty kohde yhtä suuri kuin kutsuva kohde. Tasa-arvo () -menetelmä palaa totta, jos molemmat verratut objektit ovat yhtäläiset, mutta palauttaa väärän . Kokoelmat-luokka tarjoaa menetelmän luettelon ja vertailutyypin lajittelemiseksi. Vertailutyyppien luetteloelementit lajitellaan menetelmällä Collections.sort (List, Comparator).

Vertailukelpoisten ja vertailevien tekijöiden väliset erot

  1. Vertailukelpoinen rajapinta sallii yhden lajittelusekvenssin, joka tarkoittaa sitä, että voit vertailla vain yhden objektin data-elementtiä vertailun () -menetelmässä, toisaalta Comparator-rajapinta sallii useita lajittelusekvenssejä, jotka tarkoittavat sitä, että voit verrata useita objektielementtejä.
  2. Vertailukelpoinen käyttöliittymä toteutetaan luokassa, jonka esineitä verrataan, koska lajittelulogiikka on määritelty saman luokan sisällä. Toisaalta Comparator-rajapintaa ei toteuta luokka, jonka esineitä on tarkoitus verrata, koska lajittelulogiikka on määritelty erillisissä luokissa, joissa jokainen luokka määrittelee objektin yksittäisen datalähteen lajittelun ja nämä määrittävät luokat toteuttavat Comparator-rajapinnan .
  3. Vertailukelpoinen käyttöliittymä sijaitsee java.lang-paketin sisällä, kun taas Comparator-käyttöliittymä sijaitsee java.util-paketin sisällä.
  4. Vertailukelpoinen käyttöliittymä ilmoittaa vain yhden menetelmän, joka on vertailtava (Object obj), kun taas Comparator-käyttöliittymä ilmoittaa kaksi menetelmää, jotka ovat, vertaa (Object obj1, Object obj2) ja yhtälöt (Object obj).
  5. Vertailukelpoisen vertailutekniikan (Object obj) menetelmässä verrataan menetelmää, jossa kutsutaan objektia menetelmälle siirrettyyn määrättyyn kohteeseen, kun taas Comparatorin vertailutapahtuma (Object obj1, Object obj2) vertaa menetelmälle siirrettyjä obj1-objekteja obj2: n kanssa.
  6. Kokoelmat-luokka tarjoaa lajittelutavan ”Kokoelmat.sortti (Lista lst)” lajittelemaan Vertailukelpoisen tyypin kohteita. Kokoelmat-luokka tarjoaa lajittelumenetelmän Collections.sort (List, Comparator) lajittelemaan Comparator-tyypin kohteita.

johtopäätös:

Jos haluat lajitella kohteet luonnollisessa järjestyksessä, voit käyttää vastaavaa käyttöliittymää, johon haluat lajitella objektit minkä tahansa attribuutin perusteella, ja sitten käytetään Comparator-liitäntää.

Top