Ero vertailukelpoisen ja vertailijan välillä Java-ohjelmassa

Sisällysluettelo:

Anonim

Mikä on Java-tilassa vertailukelpoista?

Vertailukelpoinen Java-tilassa on objekti, jolla verrataan itseään toiseen objektiin. Se auttaa lajittelemaan mukautettujen objektien luettelon. Luokan tulisi toteuttaa java.lang.Comparable-käyttöliittymä esiintymien vertaamiseksi. Objektiryhmä, joka toteuttaa vertailukelpoisen käyttöliittymän, lajitellaan automaattisesti Arrays.sort- ja Collections.sort-menetelmien avulla.

Tässä Comparator vs Comparable in Java -opetusohjelmassa opit:

  • Mikä on Java-tilassa vertailukelpoista?
  • Mikä on Java-vertailija?
  • Vertailussa käytetty menetelmä:
  • Vertailussa käytetty menetelmä:
  • Ero Vertailukelpoisten ja Vertailijoiden välillä Java-sovelluksessa
  • Parhaat käytännöt Comparator- ja Comparable-sovellusten käytössä Java-sovelluksessa

Mikä on Java-vertailija?

Java- vertailija on kohde eri luokkien eri kohteiden vertailemiseksi. Java-vertailurajapintaa käytetään myös käyttäjän määrittelemien luokkien objektien järjestämiseen. Se sisältää kaksi tärkeää vertailurajapintamenetelmää, jotka tunnetaan nimellä vertailu (Object obj1, Object obj2) ja yhtä suuri (Object element).

AVAINEROT:

  • Comparable tarjoaa CompareTo () -menetelmän elementtien lajittelemiseen Java-tilassa, kun taas Comparator tarjoaa verrattavan () -menetelmän Java-elementtien lajittelemiseen.
  • Vertailukelpoinen käyttöliittymä on java.lang-paketissa, kun taas Comparator-liitäntä on java.util-paketissa.
  • Comparable tarjoaa yhden lajittelusekvenssin, kun taas Comparator tarjoaa useita lajittelusekvenssejä.
  • Vertailukelpoinen vaikuttaa alkuperäiseen luokkaan, kun taas vertailija ei vaikuta alkuperäiseen luokkaan.

Vertailussa käytetty menetelmä:

Seuraava on tärkeä menetelmä, jota käytetään vertailukelpoisessa käyttöliittymässä:

Vertaa():

Vertailumenetelmää () käytetään luonnollinen lajittelu merkkijonoon. Luonnollisen lajittelun merkitys on objektissa käytettävä lajittelujärjestys, esim. Numeerinen järjestys kokonaislukujen lajittelussa, aakkosjärjestys merkkijonossa jne.

CompareTo () -menetelmän syntaksit ovat seuraavat:

int compareTo(T obj)

Edellä olevassa syntaksissa T tarkoittaa vertailtavien kohteiden tyyppiä.

CompareTo () -menetelmä vertaa objektia T obj: iin.

Tuotos:

  • Se palauttaa arvon 0, jos arvot ovat samat.
  • Jos objektilla on pienempi arvo, tämä menetelmä palauttaa negatiivisen arvon.
  • Jos objektilla on suurempi arvo, se palauttaa positiivisen arvon.

Esimerkki vertailusta () -menetelmään:

Seuraava Java-vertailuesimerkki näyttää kahden merkin, "a" ja "b", vertailun. Merkki "a" tulee aakkosittain ennen "b": tä.

Siksi lähtö on -1. Merkki "b" tulee aakkosjärjestyksessä a: n jälkeen. Siksi tulos on 1. Merkki "a" ja "b" ovat molemmat samanarvoisia. Siksi lähtö on 0.

public class Sample_String {public static void main(String[] args) {String str_Sample = "a";System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));str_Sample = "b";System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));str_Sample = "b";System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));}}

Tuotos

Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0

Vertailussa käytetty menetelmä:

Seuraavassa on tärkeitä menetelmiä, joita käytetään vertailurajapinnassa:

Vertailla():

Vertaa () -toiminnolla voit tilata esineitä. Tätä varten sinun on luotava luokka, joka toteuttaa vertailurajapinnan. Tämän jälkeen sinun on ohitettava sen vertailumenetelmä.

Vertaa () -menetelmän syntaksia on seuraava:

compare(Object obj1, Object obj2)

Edellä olevassa syntaksissa obj1 ja obj2 ovat kaksi objektia, joita sinun on vertailtava vertailumenetelmällä.

Tuotos:

  • Se palauttaa negatiivisen kokonaisluvun, jos ensimmäinen argumentti on pienempi kuin toinen.
  • Palauttaa nollan, jos ensimmäinen ja toinen argumentti ovat samat.
  • Tämä menetelmä voi palauttaa positiivisen kokonaisluvun, jos ensimmäinen argumentti on suurempi kuin toinen.

Sinun on varmistettava, että suhde on transitiivinen. Esimerkiksi ((vertaa (a, b)> 0) && (vertaa (b, c)> 0)), mikä merkitsee vertailua (a, c)> 0.

Vertaa menetelmän esimerkkiä:

Alla olevassa Java-vertailuesimerkin ohjelmassa on 6 muuttujaa. "x", "y", "p", "q", "r" ja "s". Lähtö on -1, koska arvon "x", 20 arvo on pienempi kuin arvon "y", 30. Tulos on 0, koska arvon "p", 40 on yhtä suuri kuin arvon "q", 40 arvo .

import java.lang.Integer;public class example {public static void main(String args[]){int x = 20;int y = 30;// as 10 less than 20,// Output will be a value less than zeroSystem.out.println(Integer.compare(x, y));int p = 40;int q = 40;// as 30 equals 30,// Output will be zeroSystem.out.println(Integer.compare(p, q));int r = 20;int s = 7;// as 15 is greater than 8,// Output will be a value greater than zeroSystem.out.println(Integer.compare(r, s));}}

Tuotos:

-101

Yhtä ():

Equals () tarkistaa, onko numeroobjekti yhtä suuri kuin objekti, joka välitetään argumenttina vai ei.

Equals () -menetelmän syntaksi on seuraava:

julkinen totuusarvo on yhtä suuri (objekti o)

Tämä menetelmä ottaa kaksi parametria 1) minkä tahansa objektin 2) palautusarvon. Se palauttaa arvon tosi, jos välitetty argumentti ei ole nolla ja on saman tyyppinen objekti, jolla on sama numeerinen arvo.

Esimerkki yhtäläisestä menetelmästä:

Alla olevassa esimerkissä verrataan neljää muuttujaa toisiinsa. Kolme muuttujaa on tyypin kokonaisluku ja yksi tyypin lyhyt. Ensimmäinen tulos on väärä, koska p: n arvo, joka on 5, ei ole sama kuin q: n arvo, joka on 20.

Toinen tulos on totta, koska muuttujien p ja r arvo on sama, joka on 5. Lopuksi tulos on väärä, koska muuttujilla p ja s on eri osoitetut arvot.

public class Test {public static void main(String args[]) {Integer p = 5;Integer q = 20;Integer r =5;Short s = 5;System.out.println(p.equals(q));System.out.println(p.equals(r));System.out.println(p.equals(s));}}

Tuotos

falsetruefalse

Ero Vertailukelpoisten ja Vertailijoiden välillä Java-sovelluksessa

Ero Vertailukelpoisten ja Vertailijoiden välillä Java-sovelluksessa

Tässä ovat tärkeimmät erot Java-vertailukelpoisen ja vertailijan välillä:

Vertailukelpoinen Vertailija
Comparable tarjoaa CompareTo () -menetelmän elementtien lajittelemiseksi Java-tilassa. Comparator tarjoaa vertailumenetelmän Java-elementtien lajittelemiseksi.
Vertailukelpoinen käyttöliittymä on java.lang-paketissa. Vertailurajapinta on java.util-paketissa.
Lajittelulogiikan on oltava samassa luokassa, jonka objektin aiot lajitella. Lajittelulogiikan tulisi olla erillisessä luokassa, jotta voidaan kirjoittaa erilaista lajittelua objektien eri ominaisuuksien perusteella.
Luokan, jonka objektit haluat lajitella, on toteutettava vastaava käyttöliittymä. Luokan, jonka objektit haluat lajitella, ei tarvitse toteuttaa vertailurajapintaa.
Se tarjoaa yhden lajittelusekvenssin. Se tarjoaa useita lajittelusekvenssejä.
Tämä menetelmä voi lajitella tiedot luonnollisen lajittelujärjestyksen mukaan. Tämä menetelmä lajittelee tiedot mukautetun lajittelujärjestyksen mukaan.
Se vaikuttaa alkuperäiseen luokkaan. eli todellista luokkaa muutetaan. Se ei vaikuta alkuperäiseen luokkaan, eli todellista luokkaa ei muuteta.
Toteutetaan usein API : ssa: Kalenteri, Wrapper-luokat, Päivämäärä ja String. Se toteutetaan kolmansien osapuolten luokkien esiintymien lajittelemiseksi.
Kaikissa kääreluokissa ja String-luokassa on vastaava käyttöliittymä. Ainoat toteutetut Comparator-luokat ovat Collator ja RuleBasedColator.

Parhaat käytännöt Comparator- ja Comparable-sovellusten käytössä Java-sovelluksessa

  • Käytä vertailukelpoista käyttöliittymää, kun vertailu on tietyn luokan vakio.
  • Voit käyttää lambdoja vertailijan kanssa.
  • Monet ydinluokat, jotka ovat käytettävissä, toteuttavat vastaavan käyttöliittymän.
  • On mahdollista käyttää TreeSet- ja TreeMap-sovelluksia tai lajitellessasi Set- tai Map-asetuksia.
  • MethodTo () -menetelmä toimii sekä vertailijan että vertailukelpoisen kanssa.
  • Käytä vertailurajapintaa vain, kun
  • Menetelmä vertaillaTo () palauttaa positiivisen kokonaisluvun, jos ensimmäinen objekti on suurempi kuin toinen, negatiivinen, jos se on pienempi, ja nolla, jos molemmat ovat samat.