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 perusteet | vertailukelpoinen | vertailuryhmässä |
---|---|---|
perustiedot | Vertailukelpoinen rajapinta sallii vain yhden lajittelusekvenssin. | Comparator-rajapinta sallii useita lajittelusekvenssejä. |
paketit | Vertailukelpoinen käyttöliittymä on läsnä java.lang-paketissa. | Comparator-liitäntä on java.util-paketissa. |
menetelmät | Vertailukelpoinen 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öönpano | Vertailukelpoinen rajapinta toteutetaan luokassa, jonka esineitä verrataan. | Komparaattoriliitäntä toteutetaan huokosluokan avulla luokalle, jonka esineitä verrataan. |
Vertailu | CompareTo (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 / Array | Kun 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
- 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ä.
- 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 .
- Vertailukelpoinen käyttöliittymä sijaitsee java.lang-paketin sisällä, kun taas Comparator-käyttöliittymä sijaitsee java.util-paketin sisällä.
- 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).
- 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.
- 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ää.