Võrreldav vs võrdleja sisse Java

Peamised erinevused võrreldava ja võrdlusvahendi vahel Java

  • Võrreldav sisse Java on objekt, millega võrrelda end teise objektiga, samas kui Comparator on objekt erinevate klasside erinevate objektide võrdlemiseks.
  • Võrreldav pakub compareTo() meetod elementide sortimiseks Java, samas kui Comparator pakub compare() meetod elementide sortimiseks Java.
  • Võrreldav liides on olemas java.lang pakett, samas kui Comparatori liides on olemas java.util pakendis.
  • Comparable pakub ühte sortimisjada, samas kui Comparator pakub mitut sortimisjada.
  • Võrreldav mõjutab algset klassi, samas kui Comparator ei mõjuta algset klassi.

Erinevus võrreldava ja võrdlusvahendi vahel
Erinevus võrreldava ja võrdlusvahendi vahel

Siin olen analüüsinud võrreldava ja võrdlusseadme erinevust ning hindan põhjalikult nende plusse ja miinuseid.

Mis on võrreldav Java?

Võrreldav in Java on objekt, mis võrdleb end teise objektiga. See aitab sorteerida kohandatud objektide loendit. The Java.lang. Võrreldava liidese peaks klass rakendama, et selle esinemisjuhte võrrelda. Võrreldavat liidest rakendavate objektide massiiv sorteeritakse automaatselt Arrays.sort ja Collections.sort meetodid.

Võrreldavas kasutatud meetod

Tahaksin esile tõsta ühte olulist meetodit, mida ma võrdlevas liideses sageli kasutan:

Võrdle():

CompareTo() meetodit kasutatakse stringi loomulikuks sortimiseks. Loomuliku sortimise tähendus on objektile rakenduv sortimisjärjekord, nt täisarvude sortimise numbriline järjekord, stringi tähestikuline järjekord jne.

Süntaks CompareTo() meetod on järgmine:

int compareTo(T obj)

Ülaltoodud süntaksis tähistab T objektide tüüpi, mida kavatsete võrrelda.

CompareTo() meetod võrdleb objekti T obj-ga.

Väljund:

  • Tagastab 0, kui väärtused on võrdsed.
  • Kui objektil on väiksem väärtus, tagastab see meetod negatiivse väärtuse.
  • Kui objektil on suurem väärtus, tagastab see positiivse väärtuse.

Võrreldavuse näide Java

Järgmine programm Java võrreldav näide näitab kahe märgi "a" ja "b" võrdlust. Tähemärk "a" on tähestikulises järjekorras enne "b".

Seetõttu on väljund -1. Tähemärk "b" tuleb tähestikulises järjekorras pärast "a". Seega on väljund 1. Märgid “a” ja “b” on mõlemad samaväärsed. Seega on väljund 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"));
    }
}

Väljund

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

Milles on võrdlusseade Java?

Võrdleja in Java on objekt erinevate klasside erinevate objektide võrdlemiseks. Võrdlusliides sisse Java kasutatakse ka kasutaja määratud klasside objektide korraldamiseks. See sisaldab kahte olulist võrdlusliidese meetodit, mida nimetatakse võrdlemiseks (Object obj1, Object obj2) ja võrdub (Object element).

Võrdlejas kasutatud meetod

Oma praktikas toetun ma sageli järgmistele võrdlusliidese kriitilistele meetoditele:

Võrdle ():

Compare() võimaldab tellida objekte. Selleks tuleb luua klass, mis realiseerib võrdlusliidese. Pärast seda peate selle võrdlusmeetodi alistama.

Süntaks compare() meetod on järgmine:

compare(Object obj1, Object obj2)

Ülaltoodud süntaksis on obj1 ja obj2 kaks objekti, mida peate võrdlema võrdlemise () meetodi abil. compare() meetod.

Väljund:

  • Tagastab negatiivse täisarvu, kui esimene argument on teisest väiksem.
  • Tagastab nulli, kui esimene argument ja teine ​​argument on võrdsed.
  • See meetod võib tagastada positiivse täisarvu juhul, kui esimene argument on suurem kui teine.

Peate tagama, et suhe on transitiivne. Näiteks ((võrdle(a, b)>0) && (võrdle(b, c)>0)), mis tähendab võrdle(a, c)>0.

Võrreldavuse näide Java

Allpool Java võrdlusnäites on 6 muutujad. "x", "y", "p", "q", "r" ja "s". Väljund on -1 kui "x" väärtus, 20 on väiksem kui "y", 30. Väljund on 0, kuna "p" väärtus on 40 võrdne "q" väärtusega, 40 .

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 zero 
        System.out.println(Integer.compare(x, y)); 
        int p = 40; 
        int q = 40; 
        // as 30 equals 30, 
        // Output will be zero 
        System.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 zero 
        System.out.println(Integer.compare(r, s)); 
    } 
}

Väljund:

-1
0
1

Võrdub ():

Equals() kontrollib, kas arvobjekt on võrdne objektiga, mis edastatakse argumendina või mitte.

Süntaks equals() meetod on järgmine:

public boolean equals(Object o)

Sellel meetodil on kaks parameetrit: 1) mis tahes objekt ja 2) tagastatav väärtus. Tagastab tõene, kui läbitud argument ei ole null ja see on sarnast tüüpi objekt, millel on sama arvväärtus.

Võrdub meetodi näide:

Allolevas näites võrdlen nelja muutujat omavahel. Kolm muutujat on täisarvu tüüpi ja üks on lühike tüüpi. Esimene tulemus on vale, kuna p väärtus, mis on 5, ei ole võrdne q väärtusega, mis on 20.

Teine tulemus on tõene, kuna muutujate p ja r väärtus on sama, mis on 5. Lõpuks on väljund väär, kuna muutujatele p ja s on erinevad väärtused.

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));
   }
}

Väljund

false
true
false

Erinevused võrreldava ja võrdlusseadme vahel Java

Ma näen sageli segadust Java Võrreldav ja võrdlev; siin on peamine erinevus:

Erinevus võrreldava ja võrdlusseadme vahel Java
Erinevus võrreldava ja võrdlusseadme vahel Java

Võrdluse alus Võrreldav Võrdleja
Meetod Võrreldavad pakkumised compareTo() meetod elementide sortimiseks Java. Võrdleja pakub compare() meetod elementide sortimiseks Java.
Pakend Võrreldav liides on olemas java.lang pakendis. Võrdlusliides on olemas java.util pakendis.
Sorteerimise loogika Sorteerimise loogika peab olema samas klassis objektiga, mida sorteerite. Sorteerimise loogika peaks olema eraldi klassides, et kirjutada erinevaid sorteerimisi, mis põhinevad objektide erinevatel atribuutidel.
Klassi objekt Klass, mille objekte soovite sortida, peab rakendama võrdleva liidese. Klass, mille objekte soovite sortida, ei pea rakendama võrdlusliidest.
Järjestuste sorteerimine See pakub üksikuid sortimisjadasid. See pakub mitut sortimisjada.
Sorteerimisjärjekord Selle meetodi abil saab andmeid sortida loomuliku sortimisjärjestuse järgi. See meetod sorteerib andmed vastavalt kohandatud sortimisjärjekorrale.
klass See mõjutab algset klassi. st tegelik klass on muudetud. See ei mõjuta algset klassi, st tegelikku klassi ei muudeta.
Kasutus Rakendatakse API-s sageli kalendri, ümbrisklasside, kuupäeva ja
Keel
Seda rakendatakse kolmandate osapoolte klasside eksemplaride sorteerimiseks.
Täitma Kõik ümbrisklassid ja stringiklassid rakendavad võrreldavaid liideseid. Ainsad rakendatud Comparatori klassid on Collator ja RuleBasedColator.

Parimad tavad võrdleva ja võrreldava rakenduse kasutamisel Java

  • Kasutage võrreldavat liidest, kui võrdlus on konkreetse klassi jaoks standardne.
  • Võite kasutada lambdasid koos võrdlusvahendiga.
  • Paljud saadaolevad põhiklassid rakendavad võrreldavat liidest.
  • Komplekti või kaardi sortimisel on võimalik kasutada TreeSet ja TreeMap.
  • . compareTo() meetod töötab nii komparaatoriga kui ka võrreldavaga.
  • Kasutage võrdlusliidest ainult siis, kui < vajate rohkem paindlikkust.
  • . compareTo() meetod tagastab positiivse täisarvu, kui esimene objekt on teisest suurem, negatiivse, kui see on väiksem, ja nulli, kui mõlemad on samad.

Kuidas valida võrreldava ja võrdlusaluse vahel

Kokkuvõttes näitab minu praktiline kogemus, et kasutada Comparable ja Comparator sisse Java suurendab oluliselt meie kontrolli andmete sorteerimise üle, parandades nii jõudlust kui ka funktsionaalsust.