Sammenliknbare og Comparator begge er de generiske grensesnittene i Java som brukes til å sammenligne dataelementene til objektene. Det sammenlignbare grensesnittet er tilstede i java.lang-pakken, og Comparator-grensesnittet er tilstede i java.util-pakken. Den grunnleggende forskjellen mellom Comparable og Comparator-grensesnittene er at Comparable-grensesnittet gir den enkle sorteringssekvensen, mens Comparator-grensesnittet gir flere sorteringssekvenser. Det er noen andre forskjeller mellom Comparable og Comparator grensesnitt som vi vil studere i Sammenligningstabellen.
Sammenligningstabel
Grunnlag for sammenligning | sammenlign | komparator |
---|---|---|
grunn~~POS=TRUNC | Sammenligningsgrensesnittet tillater bare enkelt sorteringssekvens. | Komparatorgrensesnittet tillater flere sorterings-sekvenser. |
pakker | Det sammenlignbare grensesnittet er tilstede i java.lang-pakken. | Komparatorgrensesnittet er tilstede i java.util-pakken. |
metoder | Det sammenlignbare grensesnittet inneholder bare en enkelt metode offentlig int sammenligning (Objekt obj); | Komparatorgrensesnittet inneholder to metoder offentlig int sammenligne (Objekt obj1, Objekt obj2) boolske likeverdige (Objekt obj) |
Gjennomføring | Komparativt grensesnitt implementeres av klassen hvis objekter skal sammenlignes. | Komparator grensesnitt er implementert av en sperat klasse i stedet for klassen hvis objekter skal sammenlignes. |
Sammenligning | SammenlignTo (Object obj) -metoden sammenligner objektet som brukes til å påberope metoden med det angitte objektet, passerer til metoden. | Sammenligningen (Objekt obj1, Objekt obj2) -metoden sammenligner begge de angitte objektene som sendes til metoden. |
List / Array | Når en liste over objektet av sammenlignbar type skal sammenlignes, gir samlingsklassen en metode, dvs. Collections.sort (List lst). | Når en liste over objekter av sammenlignbar type skal sammenlignes, gir samlingsklassen en metode, dvs. Samlinger.sort (Liste, Komparator). |
Definisjon av sammenlignbare
Sammenligning 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 Comparable-grensesnittet er Byte, Character, Double, Float, Long, Short, String og Integer-klasser. Selv dato- og kalander-klassen implementerer også det sammenlignbare grensesnittet.
Det sammenlignbare grensesnittet inneholder bare en metode som er SammenlignTo (Objektobjektiv). Denne metoden sammenligner objektet som brukes til å påkalle metoden med objektet som er angitt i parameteren. Syntaksen til metoden er som følger:
offentlig int sammenligning (Objekt obj);
SammenlignTo (Object obj) -metoden returnerer 0, når både objektet sammenlignet med metoden inneholder samme verdi, returnerer det -Vær verdi hvis oppkallingsobjektet er mindre enn det angitte objektet og returnerer + ve- verdien dersom oppkallingsobjektet har større verdi i forhold til det angitte objektet. Samlingsklassen gir en sorteringsmetode for sortering av elementene i listen. Listen (og array) -elementene i sammenlignbar type kan sorteres ved hjelp av metoden "Collections.sort (List lst)".
Definisjon av komparator
Komparator er et grensesnitt som er tilgjengelig i java.util-pakken. Grensesnittet Comparator er ikke implementert på klassen hvis objekter skal sammenlignes i stedet for at separate klasser implementerer komparatorgrensesnittet slik at sorteringslogikken blir brukt på hvert dataelement i objektet i en annen klasse. Komparator inneholder to metoder som følger:
offentlig int sammenligne (Objekt obj1, Objekt obj2) og boolesk likestilling (Objekt obj)
Sammenlign-metoden ovenfor sammenligner det første objektet obj1, med det andre objektet obj2. Sammenlign () -metoden returnerer 0 når både objektet sammenlignet med metoden inneholder samme verdi, returnerer det -Vær verdi hvis objektet obj1 er mindre enn da objektet obj2 og returnerer + ve- verdi hvis objektet obj1 har større verdi sammenlignet med til objektet obj2. Likene () -metoderne kontrollerer om spesifisert objekt er lik det påkallende objektet. Equals () -metoden returnerer sann hvis begge de sammenlignede objektene er like andre, returneres det falsk . Klassen Collections gir metoden for sortering av elementene i liste og komparatortype. Listenelementene i komparatortyper er sortert etter metoden Collections.sort (List, Comparator).
Nøkkelforskjeller mellom sammenlignbare og komparator
- Det tilsvarende grensesnittet tillater enkelt sorteringssekvens som betyr at du kun kan sammenligne bare enkelt dataelement i objektet i comparTo () -metoden derimot. Comparator-grensesnittet tillater 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 blir Comparator-grensesnittet ikke implementert av klassen hvis objekter skal sammenlignes fordi sorteringslogikken er definert i de separate klassene hvor hver klasse definerer sortering på enkeltdataelement av objektet, og disse definerende klassene implementerer komparatorgrensesnittet .
- Det sammenlignbare grensesnittet ligger i java.lang-pakken, mens Comparator-grensesnittet ligger i java.util-pakken.
- Sammenligningsgrensesnittet erklærer bare en metode som er sammenlignTo (Objektobj), mens Comparator-grensesnittet erklærer to metoder som er, sammenligner (Objekt obj1, Objekt obj2) og tilsvarer (Object obj).
- SammenlignTo (Object obj) -metoden i Comparable sammenligner metode som påkaller objekt med det angitte objektet som sendes til metoden, mens sammenligningen (Objekt obj1, Objekt obj2) -metoden til Comparator sammenligner objektene obj1 med obj2 som sendes til metoden.
- Kolleksjonsklassen gir en sorteringsmetode "Collections.sort (List lst)" for å sortere objekter av den sammenlignbare typen. Klassen Samlinger gir sorteringsmetoden Collections.sort (List, Comparator) for å sortere objektene til Comparator type.
Konklusjon:
Hvis du vil sortere objektene i den naturlige bestillingen, kan du bruke det tilsvarende grensesnittet annet du vil sortere objektene basert på et attribut, og deretter brukes Comparator-grensesnitt.