Mis on Java-s võrreldav?
Java-s on võrreldav objekt, mida võrrelda teise objektiga. See aitab kohandatud objektide loendit sorteerida. Klass peaks rakendama java.lang.Comparable liidese, et võrrelda selle eksemplare. Objektide massiivi, mis rakendab võrreldavat liidest, sorteeritakse meetodite Arrays.sort ja Collections.sort abil automaatselt.
Selles õpetuses Comparator vs Java võrreldav saate teada:
- Mis on Java-s võrreldav?
- Mis on Java-s Comparator?
- Võrdluses kasutatav meetod:
- Võrdluses kasutatud meetod:
- Erinevus Java-s võrreldava ja võrreldava vahel
- Parimad tavad, kui kasutate Comparatorit ja Java-vormingus Comparable
Mis on Java-s Comparator?
Java võrdleja on objekt erinevate klasside erinevate objektide võrdlemiseks. Java võrdlusliidest kasutatakse ka kasutaja määratud klasside objektide korrastamiseks. See sisaldab kahte olulist võrdlusliidese meetodit, mida nimetatakse võrdluseks (Object obj1, Object obj2) ja võrdseks (Object element).
PÕHISED VAHED:
- Comparable pakub Java-elementide sortimiseks meetodit CompTo (), samas kui Comparator pakub Java-elementide sortimiseks meetodit CompT (().
- Võrreldav liides on paketis java.lang, samas kui pakendis java.util on liides Comparator.
- Võrreldav pakub ühte sortimisjärjestust, samas kui Comparator pakub mitut sorteerimisjärjestust.
- Võrreldav mõjutab algset klassi, samas kui võrdlus ei mõjuta algset klassi.
Võrdluses kasutatav meetod:
Allpool on oluline meetod, mida kasutatakse liideses Võrdlus:
Võrdlema():
Stringi loomuliku sortimise teostamiseks kasutatakse meetodit CompareTo (). Loomuliku sorteerimise tähendus on objektil kasutatav sortimisjärjestus, nt täisarvude sortimise numbriline järjestus, stringi tähestikuline järjestus jne.
Meetodi CompareTo () süntaks on järgmine:
int compareTo(T obj)
Ülaltoodud süntaksis tähistab T seda tüüpi objekte, mida kavatsete võrrelda.
Meetod CompareTo () võrdleb objekti T obj-ga.
Väljund:
- See annab 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.
Meetodi näide CompareTo ():
Järgmine Java võrreldava näite programm näitab kahe tähemärgi - "a" ja "b" - võrdlust. Märk "a" on tähestiku ees enne "b".
Seetõttu on väljundiks -1. Märk "b" tuleb tähestikulises järjekorras pärast tähte "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 : -1Compare To 'b' a is : 1Compare To 'b' b is : 0
Võrdluses kasutatud meetod:
Võrdlusliideses on kasutatud olulisi meetodeid:
Võrdlema():
Võrdle () võimaldab teil objekte tellida. Selleks peate looma klassi, mis rakendab võrdlusliidest. Pärast seda peate selle võrdlusmeetodi tühistama.
Meetodi võrdlus () süntaks on järgmine:
compare(Object obj1, Object obj2)
Ülaltoodud süntaksis on obj1 ja obj2 kaks objekti, mida peate võrdlema meetodi võrdlus () abil.
Väljund:
- See tagastab negatiivse täisarvu, kui esimene argument on väiksem kui teine.
- Tagastab nulli, kui esimene 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õrdlust (a, c)> 0.
Võrdle meetodi näidet:
Allpool toodud Java võrdlusnäite programmis on 6 muutujat. "x", "y", "p", "q", "r" ja "s". Väljund on "x" väärtusena -1, 20 on väiksem kui "y", 30. Väljund on 0, kuna "p", 40 väärtus on võrdne "q", 40 väärtusega .
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));}}
Väljund:
-101
Võrdne ():
Võrdub () kontrollib, kas arvobjekt on võrdne argumendina edastatud objektiga.
Meetodi equals () süntaks on järgmine:
avalik tõeväärtus võrdub (objekt o)
See meetod võtab kaks parameetrit 1) mis tahes objekti 2) tagastusväärtuse. See tagastab tõene, kui edastatud argument ei ole null ja see on sarnast tüüpi objekt, millel on sama arvuline väärtus.
Võrdse meetodi näide:
Allpool toodud näites võrdleme nelja muutujat omavahel. Kolm muutujat on tüübi täisarv ja üks lühikese tüübiga. 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 vale, kuna muutujatel p ja s on erinevad omistatud 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
falsetruefalse
Erinevus Java-s võrreldava ja võrreldava vahel

Erinevus Java-s võrreldava ja võrreldava vahel
Siin on peamised erinevused Java Comparable vs Comparator vahel:
Võrreldav | Võrdleja |
Comparable pakub Java-elementide sortimiseks meetodit CompTo (). | Comparator pakub Java-elementide sortimiseks meetodit võrdlus (). |
Võrreldav liides on paketis java.lang. | Võrdlusliides on paketis java.util. |
Sorteerimise loogika peab olema samas klassis, mille objekti kavatsete sorteerida. | Sorteerimise loogika peaks olema eraldi klassis, et kirjutada objektide erinevate atribuutide põhjal erinev sortimine. |
Klass, mille objekte soovite sortida, peab rakendama võrreldavat liidest. | Klass, mille objekte soovite sortida, ei pea võrdlusliidest juurutama. |
See pakub üksikuid järjestamisjärjestusi. | See pakub mitut sorteerimisjärjestust. |
Selle meetodiga saab andmeid sortida vastavalt loomulikule sortimisjärjestusele. | See meetod sorteerib andmed vastavalt kohandatud sortimisjärjestusele. |
See mõjutab algset klassi. st tegelik klass on muudetud. | See ei mõjuta algset klassi, st tegelikku klassi ei muudeta. |
Rakendatakse API-s sageli järgmiselt: kalender, ümbriste klassid, kuupäev ja string. | Seda rakendatakse kolmandate osapoolte klasside eksemplaride sortimiseks. |
Kõik pakendiklassid ja String-klass rakendavad võrreldavat liidest. | Ainsad rakendatud Comparatori klassid on Collator ja RuleBasedColator. |
Parimad tavad, kui kasutate Comparatorit ja Java-vormingus Comparable
- Kasutage võrreldavat liidest, kui võrdlus on konkreetse klassi jaoks standardne.
- Võite kasutada lambdasid võrdlusravimiga.
- Paljud põhiklassid, mis on saadaval, rakendavad võrreldavat liidest.
- Võimalik on kasutada TreeSeti ja TreeMapi või komplekti või Kaarti sorteerimisel.
- Meetod CompareTo () töötab nii võrdlusalusega kui ka võrreldavaga.
- Kasutage võrdlusliidest ainult siis, kui
- Meetod võrdlus () tagastab positiivse täisarvu, kui esimene objekt on suurem kui teine, negatiivne, kui see on madalam, ja null, kui mõlemad on samad.