Anbefalet, 2024

Redaktørens Valg

Forskel mellem sammenlignelig og sammenligning i Java

Sammenligner og sammenligner begge er de generiske grænseflader i Java, der bruges til at sammenligne objekternes dataelementer. Den sammenlignelige grænseflade er til stede i java.lang-pakken, og Comparator-grænsefladen er til stede i java.util-pakken. Den grundlæggende forskel mellem Comparable og Comparator-grænsefladerne er, at den sammenlignelige grænseflade tilvejebringer enkelt sorteringssekvensen, mens Comparator-grænsefladen giver de flere sorteringssekvenser. Der er nogle andre forskelle mellem Comparable og Comparator-grænsefladen, som vi vil studere i Sammenligningstabellen.

Sammenligningstabel

Grundlag for sammenligningSammenligneligkomparator
GrundlæggendeDen sammenlignelige grænseflade tillader kun en enkelt sorteringssekvens.Comparator-grænsefladen tillader flere sorterings-sekvenser.
pakkerDen sammenlignelige grænseflade er til stede i java.lang-pakken.Comparator-grænsefladen er til stede i java.util-pakken.
MetoderDen sammenlignelige grænseflade indeholder kun en enkelt metode
public int compareTo (Objekt obj);
Comparator-grænsefladen indeholder to metoder
offentlig int sammenligne (Objekt obj1, Objekt obj2)
boolske ligeværdier (Objekt obj)
ImplementeringSammenligningsgrænseflade implementeres af klassen, hvis objekter skal sammenlignes.Comparator interface er implementeret af en sperat klasse i stedet for den klasse, hvis objekter skal sammenlignes.
SammenligningMetoden comparTo (Object obj) sammenligner objektet, som bruges til at påberåbe metoden med det angivne objekt, der passerer til metoden.Sammenligningen (Objekt obj1, Objekt obj2) metoden sammenligner begge de specificerede objekter, der sendes til metoden.
Liste / ArrayNår en liste over objektet af sammenlignelig type skal sammenlignes, giver samlingsklassen en metode, dvs. Collections.sort (List lst).Når en liste over objekter af sammenlignelig type skal sammenlignes, giver samlingsklassen en metode, dvs.
Collections.sort (Liste, Sammenligning).

Definition af sammenlignelige

Sammenligning er en grænseflade, der er tilgængelig i java.lang-pakken. En klasse implementerer Comparator-grænsefladen for at sortere objektet i naturlig rækkefølge. Objekterne sorteres i naturlig orden betyder, at objekterne sammenlignes med deres ASCII-værdier. Klasserne, der implementerer den sammenlignelige grænseflade, er Byte, Character, Double, Float, Long, Short, String og Integer klasser. Selv dato- og kalanderklassen implementerer også den sammenlignelige grænseflade.

Den sammenlignelige grænseflade indeholder kun én metode, der er SammenlignTo (Objekt obj). Denne metode sammenligner objektet, der bruges til at påberåbe metoden med objektet angivet i parameteren. Syntaks af metoden er som følger:

 public int compareTo (Objekt obj); 

SammenlignTo (Object obj) -metoden returnerer 0, når både objektet sammenlignet med metoden indeholder samme værdi, returnerer det -værdien, hvis opkaldsobjektet er mindre end det angivne objekt og returnerer + ve- værdi, hvis opkaldsobjektet har større værdi i forhold til det angivne objekt. Kolleksklassen giver en sorteringsmetode til sortering af elementerne i listen. Listen (og array) elementer af sammenlignelig type kan sorteres ved hjælp af metoden "Collections.sort (List lst)".

Definition af komparator

Komparator er en grænseflade, der er tilgængelig i java.util-pakken. Interface Comparator implementeres ikke på klassen, hvis objekter skal sammenlignes i stedet for at separate klasseværktøjer udfører Comparator-grænsefladen, så sorteringslogikken anvendes til hvert dataelement i objektet i en anden klasse. Komparator indeholder to metoder som følger:

 offentlige int sammenligne (Objekt obj1, Objekt obj2) og booleanske ligeværdier (Objekt obj) 

Metoden ovenfor () sammenligner det første objekt obj1, med det andet objekt obj2. Metoden Sammenlign () returnerer 0, når både objektet sammenlignet med metoden indeholder samme værdi, returnerer det -Værdi hvis objektet obj1 er mindre end derefter objektet obj2 og returnerer + ve- værdi, hvis objektet obj1 har større værdi sammenlignet med til objektet obj2. Metoderne equals () kontrollerer, om det angivne objekt er lig med opkaldsobjektet. Metoden equals () returnerer sandt, hvis begge de sammenlignede objekter er ens, den returnerer falsk . Klassen Collections giver metoden til sortering af elementerne i liste og komparatortype. Listen elementer af komparator typer er sorteret efter metoden Collections.sort (List, Comparator).

Nøgleforskelle mellem sammenlignelige og sammenligningsværdier

  1. Den sammenlignelige grænseflade tillader enkelt sorteringssekvens, som betyder, at du kun kan sammenligne kun enkelt dataelement i objektet i comparTo () -metoden på den anden side Comparator-grænsefladen tillader flere sorteringssekvenser, der betyder at du kan sammenligne flere dataelementer af objektet.
  2. Den sammenlignelige grænseflade implementeres af klassen, hvis objekter skal sammenlignes, fordi sorteringslogikken er defineret inden for samme klasse. På den anden side er Comparator-grænsefladen ikke implementeret af klassen, hvis objekter skal sammenlignes, fordi sorteringslogikken er defineret i de separate klasser, hvor hver klasse definerer sortering på enkelt dataelement af objektet, og disse definerende klasser implementerer Comparator-grænsefladen .
  3. Den sammenlignelige grænseflade ligger i java.lang-pakken, mens Comparator-grænsefladen ligger inde i java.util-pakken.
  4. Den sammenlignelige grænseflade erklærer kun en metode, der er sammenlignelig med (Objektobj), mens Comparator-grænsefladen erklærer to metoder, der er sammenlignende (Objekt obj1, Objekt obj2) og ligestiller (Object obj).
  5. Metoden comparTo (Object obj) i Comparable sammenligner metode, der anvender objekt med det angivne objekt, der sendes til metoden, mens sammenligningen (Objekt obj1, Objekt obj2) -metoden i Comparator sammenligner objektene obj1 med obj2, der sendes til metoden.
  6. Klassen Collections giver en sorteringsmetode "Collections.sort (List lst)" for at sortere objekterne af den sammenlignelige type. Klassen Collections giver sorteringsmetode Collections.sort (List, Comparator) for at sortere objekterne af Comparator type.

Konklusion:

Hvis du vil sortere objekterne i den naturlige ordre, kan du bruge den tilsvarende grænseflade ellers vil du sortere objekterne ud fra en attribut, så bruges Comparator interface.

Top