Forskjellen mellom Comparable og Comparator i Java
Innhold
Sammenlignbar og komparator er begge generiske grensesnitt i Java som brukes til å sammenligne dataelementene til objektene. Det sammenlignbare grensesnittet er til stede i java.lang-pakken og Comparator-grensesnittet er til stede i java.util-pakken. Den grunnleggende forskjellen mellom sammenlignings- og sammenligningsgrensesnittene er at det sammenlignbare grensesnittet gir den ene sorteringssekvensen, mens sammenligningsgrensesnittet gir de flere sorteringssekvensene. Det er noen andre forskjeller mellom Comparable og Comparator-grensesnitt som vi vil studere i sammenligningstabellen.
- Sammenligningstabell
- Definisjon
- Viktige forskjeller
- Konklusjon
Sammenligningstabell
Grunnlag for sammenligning | sammenlign | komparator |
---|---|---|
grunn~~POS=TRUNC | Det sammenlignbare grensesnittet tillater bare enkeltsorteringssekvens. | Comparator-grensesnittet tillater flere sorteringssekvenser. |
pakker | Det sammenlignbare grensesnittet er til stede i java.lang-pakken. | Comparator-grensesnittet er til stede i java.util-pakken. |
metoder | Det sammenlignbare grensesnittet inneholder bare én metode offentlig int sammenlignTo (Object obj); | Comparator-grensesnittet inneholder to metoder offentlig int sammenligne (Object obj1, Object obj2) boolsk er lik (Obj obj) |
Gjennomføring | Sammenlignbart grensesnitt implementeres av klassen hvis objekter skal sammenlignes. | Sammenligningsgrensesnitt implementeres av en speratklasse i stedet for klassen hvis objekter skal sammenlignes. |
Sammenligning | Metoden CompareTo (Object obj) sammenligner objektet som brukes til å påkalle metoden med det angitte objektet som går til metoden. | Metoden sammenligne (Object obj1, Object obj2) sammenligner begge de spesifiserte objektene som sendes til metoden. |
List / Array | Når en liste over objekt av sammenlignbar type må sammenlignes, gir samlingsklassen en metode, dvs. samlinger.sort (liste lst). | Når en liste over objekter av sammenlignbar type må sammenlignes, gir samlingsklassen en metode, dvs. Collections.sort (Liste, sammenligning). |
Definisjon av sammenlignbar
Sammenlignbart er et grensesnitt som er tilgjengelig i java.lang-pakken. En klasse implementerer Comparator-grensesnittet, for å sortere objektet i naturlig rekkefølge. Objektene er sortert i naturlig rekkefølge betyr at objektene blir sammenlignet med deres ASCII-verdier. Klassene som implementerer det sammenlignbare grensesnittet er klasser Byte, Character, Double, Float, Long, Short, String og Heeltall. Til og med Date and Calander-klassen implementerer også det sammenlignbare grensesnittet.
Det sammenlignbare grensesnittet inneholder bare en metode som er CompareTo (Object obj). Denne metoden sammenligner objektet som ble brukt for å påkalle metoden med objektet som er spesifisert i parameteren. Syntaks av metoden er som følger:
offentlig int sammenlignTo (Object obj);
CompareTo (Object obj) -metoden går tilbake 0, når begge objektene sammenlignet med metoden inneholder samme verdi, returnerer det ve verdi hvis det påkaller objektet er mindre enn det spesifiserte objektet og returnerer + ve verdi hvis det påkaller objektet har større verdi sammenlignet med det spesifiserte objektet. Samlingsklassen gir en sorteringsmetode for å sortere elementene i listen. Liste (og matrise) -elementene av sammenlignbar type kan sorteres ved bruk av metoden “Collections.sort (List lst)”.
Definisjon av Comparator
Comparator er et grensesnitt som er tilgjengelig i java.util-pakken. Grensesnittet Comparator implementeres ikke på klassen hvis objekter skal sammenlignes, i stedet implementerer separat klasse Comparator-grensesnittet slik at sorteringslogikken blir brukt på hvert dataelement av objektet i en annen klasse. Sammenligner inneholder to metoder som følger:
offentlig int-sammenligning (Object obj1, Object obj2) og boolsk lik (Object obj)
Sammenlign-metoden ovenfor sammenligner det første objektet obj1, med det andre objektet obj2. Sammenlign () -metoden tilbake 0 når begge objektene sammenlignet med metoden inneholder samme verdi, kommer det tilbake ve verdi hvis objektet obj1 er mindre enn da objektet obj2 og returnerer + ve verdi hvis objektet obj1 har større verdi sammenlignet med objektet obj2. Metodene lik () sjekker om spesifisert objekt er lik det påkaller objektet. Equals () -metoden returnerer ekte Hvis begge de sammenliknede objektene er like ellers returnerer det falsk. Samlingsklassen inneholder metoden for å sortere elementene i liste og komparatortype. Listeelementene for komparatortyper sorteres etter metoden Collections.sort (List, Comparator).
- Det sammenlignbare grensesnittet tillater enkel sorteringssekvens som betyr at du bare kan sammenligne enkelt dataelement av objektet i sammenligningstro () -metoden. På den annen side lar Comparator-grensesnittet flere sorteringssekvenser som betyr at du kan sammenligne flere dataelementer av objektet.
- Det sammenlignbare grensesnittet implementeres av klassen hvis objekter skal sammenlignes fordi sorteringslogikken er definert i samme klasse. På den annen side implementeres ikke Comparator-grensesnittet av klassen hvis objekter skal sammenlignes fordi sorteringslogikken er definert i de separate klassene der hver klasse definerer sortering på ett dataelement i objektet og disse definerende klassene implementerer Comparator-grensesnittet .
- Det sammenlignbare grensesnittet ligger inne i java.lang-pakken, mens Comparator-grensesnittet ligger inne i java.util-pakken.
- Det sammenlignbare grensesnittet deklarerer bare en metode som er sammenligneTo (Object obj), mens Comparator-grensesnittet deklarerer to metoder som er, sammenligne (Objekt obj1, Objekt obj2) og lik (Objekt obj).
- CompareTo (Object obj) -metoden i Comparable sammenligner metoden som påkaller objekt med det spesifiserte objektet som er sendt til metoden, mens sammenligningsmetoden (Object obj1, Object obj2) i Comparator sammenligner obj1 obj1 med obj2 som sendes til metoden.
- Samlingsklassen inneholder en sorteringsmetode “Collections.sort (List lst)” for å sortere objektene av sammenlignbar type. Samlingsklassen inneholder sorteringsmetode Collections.sort (Liste, sammenligning) for å sortere objektene av typen komparator.
Konklusjon:
Hvis du vil sortere objektene i naturlig rekkefølge, kan du bruke det sammenlignbare grensesnittet ellers du vil sortere objektene basert på et hvilket som helst attributt, og deretter brukes Comparator-grensesnitt.