Hva er sammenlignbart i Java?
Sammenlignelig i Java er et objekt å sammenligne seg med et annet objekt. Det hjelper å sortere listen over egendefinerte objekter. Det sammenlignbare java.lang.-grensesnittet skal implementeres av en klasse for å sammenligne forekomster. Array av objekter som implementerer et sammenlignbart grensesnitt, sorteres automatisk etter Arrays.sort og Collections.sort-metoder.
I denne Comparator vs Comparable in Java-opplæringen vil du lære:
- Hva er sammenlignbart i Java?
- Hva er Comparator i Java?
- Metode brukt i sammenlignbar:
- Metode brukt i komparator:
- Forskjellen mellom Comparable vs Comparator i Java
- Beste fremgangsmåter når du bruker Comparator og Comparable i Java
Hva er Comparator i Java?
Comparator i Java er et objekt for å sammenligne forskjellige objekter i forskjellige klasser. Comparator-grensesnitt i Java brukes også til å ordne objektene til brukerdefinerte klasser. Den inneholder to viktige komparatorgrensesnittmetoder som kalles sammenligne (Objekt obj1, Objekt obj2) og lik (Objektelement).
HOVEDFORSKJELL:
- Comparable gir comparTo () -metoden for å sortere elementer i Java, mens Comparator gir Compare () -metoden for å sortere elementer i Java.
- Sammenlignbart grensesnitt er tilstede i java.lang-pakken, mens sammenligningsgrensesnitt er tilstede i java.util-pakke.
- Comparable gir enkel sorteringssekvens mens Comparator gir flere sorteringssekvenser.
- Sammenlignelig påvirker den opprinnelige klassen, mens komparatoren ikke påvirker den opprinnelige klassen.
Metode brukt i sammenlignbar:
Følgende er en viktig metode som brukes i det sammenlignbare grensesnittet:
Sammenligne med():
CompareTo () -metoden brukes til å utføre naturlig sortering på streng. Betydningen av naturlig sortering er sorteringsrekkefølgen som gjelder på objektet, for eksempel numerisk rekkefølge for sortering av heltall, alfabetisk rekkefølge for streng osv.
Syntaksen for CompareTo () -metoden er som følger:
int compareTo(T obj)
I syntaksen ovenfor betyr T hvilken type objekter du skal sammenligne.
Metoden CompareTo () sammenligner objektet med T obj.
Produksjon:
- Den returnerer 0 hvis verdiene er like.
- Hvis objektet har en mindre verdi, returnerer denne metoden en negativ verdi.
- Hvis objektet har en høyere verdi, returnerer den en positiv verdi.
CompareTo () Metodeeksempel:
Det følgende programmet med Java-sammenlignbart eksempel viser sammenligningen av to tegn, "a" og "b". Tegn "a" kommer foran "b" alfabetisk.
Derfor er produksjonen -1. Tegn "b" kommer etter "a" alfabetisk. Derfor er utdata 1. Tegn "a" og "b" begge er ekvivalente. Derfor er utgangen 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"));}}
Produksjon
Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0
Metode brukt i komparator:
Følgende er de viktige metodene som brukes i komparatorgrensesnittet:
Sammenligne():
Sammenlign () kan du bestille objekter. For å gjøre dette må du opprette en klasse som implementerer komparatorgrensesnitt. Etter dette må du overstyre sammenligningsmetoden.
Syntaksen for sammenligningsmetoden () er som følger:
compare(Object obj1, Object obj2)
I ovennevnte syntaks er obj1 og obj2 to objekter du må sammenligne med sammenligningsmetoden ().
Produksjon:
- Det returnerer et negativt heltall hvis det første argumentet er mindre enn det andre.
- Returnerer null hvis det første argumentet og det andre argumentet er like.
- Denne metoden kan returnere et positivt heltall, hvis det første argumentet er større enn det andre.
Du må sørge for at forholdet er midlertidig. For eksempel ((sammenlign (a, b)> 0) && (sammenlign (b, c)> 0)) som innebærer sammenligne (a, c)> 0.
Eksempel på sammenligningsmetode:
I nedenstående program for Java-komparatoreksempel er det 6 variabler. "x", "y", "p", "q", "r" og "s". Utgangen er -1 som verdien av "x", 20 er mindre enn verdien av "y", 30. Utgangen er 0 fordi verdien av "p", 40 er lik verdien av "q", 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 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));}}
Produksjon:
-101
Er lik():
Equals () verifiserer om nummerobjektet er lik objektet, som sendes som et argument eller ikke.
Syntaksen for equals () -metoden er som følger:
offentlige boolske lik (Objekt o)
Denne metoden tar to parametere 1) ethvert objekt 2) returverdi. Det returnerer sant hvis argumentet som er sendt, ikke er null og er et objekt av samme type som har samme numeriske verdi.
Eksempel på lik metode:
I eksemplet nedenfor sammenligner vi de fire variablene med hverandre. Tre variabler er av typen heltall og en av typen kort. Det første resultatet er usant da verdien av p, som er 5, ikke er lik verdien av q, som er 20.
Det andre resultatet er sant fordi verdien av variabelen p og r er den samme, som er 5. Til slutt er utdataene falske, da variabelen p og s har forskjellige tildelte verdier.
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));}}
Produksjon
falsetruefalse
Forskjellen mellom Comparable vs Comparator i Java

Forskjellen mellom Comparable vs Comparator i Java
Her er de viktigste forskjellene mellom Java Comparable vs Comparator:
Sammenlignelig | Komparator |
Comparable gir comparTo () -metoden for å sortere elementer i Java. | Comparator gir sammenligningsmetoden () for å sortere elementer i Java. |
Sammenlignbart grensesnitt er tilstede i java.lang-pakken. | Komparatorgrensesnitt er tilstede i java.util-pakken. |
Sorteringslogikken må være i samme klasse hvis objekt du skal sortere. | Logikken med sortering bør være i egen klasse for å skrive forskjellig sortering basert på forskjellige attributter til objekter. |
Klassen hvis objekter du vil sortere, må implementere et sammenlignbart grensesnitt. | Class, hvis objekter du vil sortere, trenger ikke å implementere et komparatorgrensesnitt. |
Det gir enkle sorteringssekvenser. | Det gir flere sorteringssekvenser. |
Denne metoden kan sortere dataene i henhold til den naturlige sorteringsrekkefølgen. | Denne metoden sorterer dataene i henhold til den tilpassede sorteringsrekkefølgen. |
Det påvirker den opprinnelige klassen. dvs. at faktisk klasse endres. | Det påvirker ikke den opprinnelige klassen, dvs. faktisk klasse endres ikke. |
Implementert ofte i API av: Kalender, Wrapper-klasser, Dato og String. | Det er implementert for å sortere forekomster av tredjepartsklasser. |
Alle pakkeklasser og strengklasser implementerer sammenlignbart grensesnitt. | De eneste implementerte klassene av Comparator er Collator og RuleBasedColator. |
Beste fremgangsmåter når du bruker Comparator og Comparable i Java
- Bruk et sammenlignbart grensesnitt når sammenligningen er standard for den spesifikke klassen.
- Du kan bruke lambdas med en komparator.
- Mange kjerneklasser er tilgjengelige i implementerer et sammenlignbart grensesnitt.
- Det er mulig å bruke TreeSet og TreeMap eller mens du sorterer Set eller Map.
- CompareTo () -metoden fungerer både med komparator og sammenlignbar.
- Bruk komparatorgrensesnittet bare når du
- CompareTo () -metoden returnerer et positivt heltall hvis det første objektet er større enn det andre, negativt hvis det er lavere, og null hvis begge er like.