Forskjellen mellom Comparable og Comparator i Java

Forfatter: Laura McKinney
Opprettelsesdato: 1 April 2021
Oppdater Dato: 17 Kan 2024
Anonim
Java Override compareTo method to sort a list of objects 01
Video: Java Override compareTo method to sort a list of objects 01

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.


  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningsammenlignkomparator
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øringSammenlignbart 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 / ArrayNå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).

  1. 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.
  2. 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 .
  3. Det sammenlignbare grensesnittet ligger inne i java.lang-pakken, mens Comparator-grensesnittet ligger inne i java.util-pakken.
  4. 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).
  5. 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.
  6. 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.