Kas yra palyginama „Java“?
Palyginamas „Java“ yra objektas, kurį galima palyginti su kitu objektu. Tai padeda surūšiuoti pasirinktinių objektų sąrašą. „Java.lang.Carable“ sąsają turėtų įdiegti klasė, kad būtų galima palyginti jos egzempliorius. Objektų masyvas, įgyvendinantis panašią sąsają, rūšiuojamas automatiškai pagal Arrays.sort ir Collections.sort metodus.
Šioje „Java“ mokymo programoje „Comparator vs Comparable“ sužinosite:
- Kas yra palyginama „Java“?
- Kas yra „Java“ lygintuvas?
- „Palyginamame“ naudotas metodas:
- Komparatoriuje naudojamas metodas:
- Skirtumas tarp „Java“ palyginamųjų ir lyginamųjų
- Geriausia praktika naudojant „Comparator“ ir „Java“
Kas yra „Java“ lygintuvas?
„Java“ lygintuvas yra objektas, skirtas palyginti skirtingus skirtingų klasių objektus. Komparatoriaus sąsaja „Java“ taip pat naudojama tvarkant vartotojo apibrėžtų klasių objektus. Tai apima du svarbius lyginamojo sąsajos metodus, žinomus kaip „palyginimas“ („Object obj1“, „Object obj2“) ir lygus („Object element“).
PAGRINDINIAI SKIRTUMAI:
- „Comparable“ suteikia „Java“ elementams rūšiuoti metodą „palyginti“ (), o „Java“ elementams rūšiuoti - „Comparator“.
- Lyginamoji sąsaja yra pakete java.lang, o Comparator sąsaja yra pakete java.util.
- „Comparable“ teikia vieną rūšiavimo seką, o „Comparator“ - kelias rūšiavimo sekas.
- Palyginamas daro įtaką pradinei klasei, o lyginamasis neturi įtakos pradinei klasei.
„Palyginamame“ naudotas metodas:
Toliau pateikiamas svarbus metodas, naudojamas lyginamojoje sąsajoje:
Palyginti su():
Metodas „CompareTo“ () naudojamas natūraliam eilutės rūšiavimui atlikti. Natūralaus rūšiavimo prasmė yra rūšiavimo tvarka, taikoma objektui, pvz., Skaitinė tvarka sveikiems skaičiams rūšiuoti, abėcėlės tvarka eilutėms ir kt.
Metodo CompareTo () sintaksė yra tokia:
int compareTo(T obj)
Pirmiau pateiktoje sintaksėje T reiškia objektų, kuriuos ketinate palyginti, tipą.
Metodas „CompareTo ()“ palygina objektą su T obj.
Išvestis:
- Jei reikšmės yra lygios, jis pateikia 0.
- Jei objekto vertė yra mažesnė, šis metodas pateikia neigiamą vertę.
- Jei objekto vertė yra didesnė, jis pateikia teigiamą vertę.
Metodo „CompareTo ()“ pavyzdys:
Ši „Java“ palyginamojo pavyzdžio programa rodo dviejų simbolių „a“ ir „b“ palyginimą. Simbolis „a“ abėcėlės tvarka eina prieš „b“.
Todėl išvestis yra -1. Simbolis „b“ rašomas abėcėlės tvarka po „a“. Taigi išvestis yra 1. Simboliai „a“ ir „b“ yra lygiaverčiai. Taigi išvestis yra 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"));}}
Rezultatas
Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0
Komparatoriuje naudojamas metodas:
Toliau pateikiami svarbūs lyginamosios sąsajos metodai:
Palyginti ():
Palyginti () galite užsisakyti objektus. Norėdami tai padaryti, turite sukurti klasę, įdiegiančią lyginamąją sąsają. Po to turite nepaisyti palyginimo metodo.
Palyginimo () metodo sintaksė yra tokia:
compare(Object obj1, Object obj2)
Pirmiau pateiktoje sintaksėje obj1 ir obj2 yra du objektai, kuriuos turite palyginti naudodami metodą palyginti ().
Išvestis:
- Jis pateikia neigiamą sveikąjį skaičių, jei pirmasis argumentas yra mažesnis už antrąjį.
- Pateikia nulį, jei pirmasis ir antrasis argumentai yra lygūs.
- Šis metodas gali pateikti teigiamą sveikąjį skaičių, jei pirmasis argumentas yra didesnis nei antrasis.
Turite įsitikinti, kad santykis yra tranzityvus. Pvz., ((Palyginkite (a, b)> 0) && (palyginkite (b, c)> 0)), kuris reiškia palyginimą (a, c)> 0.
Palyginti metodo pavyzdį:
Žemiau pateiktoje „Java“ palyginamojo pavyzdžio programoje yra 6 kintamieji. „x“, „y“, „p“, „q“, „r“ ir „s“. Išėjimas yra -1, nes „x“, 20 vertė yra mažesnė už „y“, 30. Išvestis yra 0, nes „p“, 40 vertė yra lygi „q“, 40 vertei .
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));}}
Išvestis:
-101
Lygus ():
„Equals“) patikrina, ar skaičiaus objektas yra lygus objektui, kuris perduodamas kaip argumentas, ar ne.
Metodo equals () sintaksė yra tokia:
viešoji loginė reikšmė lygi (objektas o)
Šis metodas reikalauja dviejų parametrų: 1) bet kurio objekto; Jis pateikia teisingą vertę, jei perduotas argumentas nėra nulis ir yra panašaus tipo objektas, turintis tą pačią skaitinę vertę.
Lygus metodo pavyzdys:
Žemiau pateiktame pavyzdyje lyginame keturis kintamuosius tarpusavyje. Trys kintamieji yra sveiko skaičiaus ir vienas trumpi. Pirmasis rezultatas yra klaidingas, nes p reikšmė, kuri yra 5, nėra lygi q vertei, kuri yra 20.
Antrasis rezultatas yra teisingas, nes kintamųjų p ir r vertė yra ta pati, kuri yra 5. Galiausiai išvestis yra klaidinga, nes kintamieji p ir s turi skirtingas reikšmes.
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));}}
Rezultatas
falsetruefalse
Skirtumas tarp „Java“ palyginamųjų ir lyginamųjų
Čia pateikiami pagrindiniai „Java Comparable“ ir „Comparator“ skirtumai:
Palyginamas | Palygintojas |
„Comparable“ pateikia „Java“ elementų rūšiavimo metodą „salīdzinti“ (). | „Comparator“ pateikia „Java“ elementų rūšiavimo metodą palyginti (). |
Lyginamoji sąsaja yra pakete java.lang. | Lyginamoji sąsaja yra pakete java.util. |
Rūšiavimo logika turi būti toje pačioje klasėje, kurios objektą ketinate rūšiuoti. | Rūšiavimo logika turėtų būti atskiroje klasėje, kad būtų galima rašyti skirtingą rūšiavimą pagal skirtingus objektų atributus. |
Klasė, kurios objektus norite rūšiuoti, turi įdiegti panašią sąsają. | Klasei, kurios objektus norite rūšiuoti, nereikia įdiegti lyginamosios sąsajos. |
Jis teikia atskiras rūšiavimo sekas. | Tai teikia kelias rūšiavimo sekas. |
Šis metodas gali rūšiuoti duomenis pagal natūralią rūšiavimo tvarką. | Šis metodas surūšiuoja duomenis pagal pritaikytą rūšiavimo tvarką. |
Tai daro įtaką pradinei klasei. ty faktinė klasė yra pakeista. | Tai neturi įtakos pradinei klasei, ty faktinė klasė nėra keičiama. |
API dažnai įgyvendina : Kalendorius, „Wrapper“ klasės, data ir eilutė. | Jis įgyvendinamas norint rūšiuoti trečiųjų šalių klasių egzempliorius. |
Visose įvyniojimo klasėse ir „String“ klasėse įdiegta panaši sąsaja. | Vienintelės įdiegtos „Comparator“ klasės yra „Collator“ ir „RuleBasedColator“. |
Geriausia praktika naudojant „Comparator“ ir „Java“
- Naudokite palyginamą sąsają, kai palyginimas yra standartinis konkrečiai klasei.
- Galite naudoti lambdas su lyginamuoju.
- Daugelis pagrindinių klasių, kurias galima įsigyti, įgyvendina panašią sąsają.
- Galima naudoti „TreeSet“ ir „TreeMap“ arba rūšiuojant rinkinį arba žemėlapį.
- „CompareTo“ () metodas veikia ir su palyginamuoju, ir su palyginamuoju.
- Palyginamąją sąsają naudokite tik tada, kai
- Metodas „CompareTo ()“ pateiks teigiamą sveikąjį skaičių, jei pirmasis objektas yra didesnis už kitą, neigiamą, jei jis yra mažesnis, ir nulį, jei abu yra vienodi.