Aanbevolen, 2024

Editor'S Choice

Verschil tussen vergelijkbaar en comparator in Java

Comparable en Comparator zijn beide de algemene interfaces in Java die worden gebruikt om de gegevenselementen van de objecten te vergelijken. De vergelijkbare interface is aanwezig in de java.lang-pakket en de Comparator-interface is aanwezig in het pakket java.util. Het fundamentele verschil tussen de Comparable en Comparator-interfaces is dat de Comparable-interface de enkele sorteringssequentie biedt, terwijl de Comparator-interface de meerdere sorteersequenties biedt. Er zijn enkele andere verschillen tussen de Comparable en Comparator-interface die we in de Vergelijkingstabel zullen bestuderen.

Vergelijkingstabel

Basis voor vergelijkingVergelijkbaarComparator
basis-De vergelijkbare interface maakt slechts één sorteervolgorde mogelijk.De Comparator-interface maakt meerdere sorteerreeksen mogelijk.
PakketjesDe vergelijkbare interface is aanwezig in het pakket java.lang.De Comparator-interface is aanwezig in het pakket java.util.
methodenDe vergelijkbare interface bevat slechts één methode
public int compareTo (Object obj);
De Comparator-interface bevat twee methoden
public int compare (Object obj1, Object obj2)
boolean equals (Object obj)
ImplementatieVergelijkbare interface wordt geïmplementeerd door de klasse waarvan de objecten moeten worden vergeleken.Comparator-interface wordt geïmplementeerd door een sperate-klasse in plaats van de klasse waarvan de objecten moeten worden vergeleken.
VergelijkingDe methode compare to (Object obj) vergelijkt het object dat wordt gebruikt om de methode aan te roepen met het opgegeven object doorgeeft aan de methode.De methode compare (Object obj1, Object obj2) vergelijkt zowel de opgegeven objecten die aan de methode zijn doorgegeven.
List / ArrayWanneer een lijst van het object van Vergelijkbaar type moet worden vergeleken, biedt de klasse Collection een methode, dwz Collections.sort (Lijst lst).Wanneer een lijst met objecten van het vergelijkbare type moet worden vergeleken, biedt de klasse Collection een methode, dwz
Collections.sort (lijst, vergelijker).

Definitie van vergelijkbaar

Vergelijkbaar is een interface die beschikbaar is in het pakket java.lang. Een klasse implementeert de Comparator-interface om het object in natuurlijke volgorde te sorteren. De objecten zijn gesorteerd in natuurlijke volgorde betekent dat de objecten worden vergeleken met hun ASCII-waarden. De klassen die de vergelijkbare interface implementeren, zijn klassen byte, teken, dubbel, zwevend, lang, kort, string en integer. Zelfs de klasse Date en Calander implementeert ook de vergelijkbare interface.

De vergelijkbare interface bevat slechts één methode die CompareTo (Object obj) is. Deze methode vergelijkt het object dat wordt gebruikt om de methode aan te roepen met het object dat is opgegeven in de parameter. De syntaxis van de methode is als volgt:

 public int compareTo (Object obj); 

De methode CompareTo (Object obj) retourneert 0, wanneer het door de methode vergeleken object dezelfde waarde bevat, wordt het geretourneerd - de waarde als het aanroepende object kleiner is dan het opgegeven object en de + ve- waarde retourneert als het aanroepende object groter is waarde in vergelijking met het opgegeven object. De klasse Collections biedt een sorteermethode voor het sorteren van de elementen van de lijst. De lijst- (en array-) elementen van het vergelijkbare type kunnen worden gesorteerd met behulp van de methode "Collections.sort (Lijst lst)".

Definitie van comparator

Comparator is een interface die beschikbaar is in java.util-pakket. De interface-vergelijker is niet geïmplementeerd in de klasse waarvan de objecten moeten worden vergeleken. In plaats daarvan implementeert afzonderlijke klasse de vergelijkingsinterface zodat de sorteerlogica wordt toegepast op elk gegevenselement van het object in een andere klasse. Comparator bevat twee methoden als volgt:

 public int compare (Object obj1, Object obj2) en Boolean equals (Object obj) 

De methode compare () vergelijkt het eerste object obj1 met het tweede object obj2. De methode compare () retourneert 0 als het object dat door de methode wordt vergeleken dezelfde waarde bevat, het retourneert - de waarde als het object obj1 kleiner is dan het object obj2 en als resultaat retourneert + ve als het object obj1 een grotere waarde heeft in vergelijking naar het object obj2. De methode equals () controleert of het opgegeven object gelijk is aan het aanroepende object. De methode equals () retourneert true als beide vergeleken objecten gelijk zijn, anders wordt false geretourneerd. De klasse Collections biedt de methode voor het sorteren van de elementen van lijst en comparatortype. De lijstelementen van vergelijkertypen worden gesorteerd op de methode Collections.sort (Lijst, Vergelijker).

Belangrijkste verschillen tussen vergelijkbaar en comparator

  1. De vergelijkbare interface maakt een enkele sorteervolgorde mogelijk, wat betekent dat u slechts één gegevenselement van het object in compareTo () -methode kunt vergelijken. Comparatorinterface maakt meerdere sorteerreeksen mogelijk, wat betekent dat u meerdere gegevenselementen van het object kunt vergelijken.
  2. De vergelijkbare interface wordt geïmplementeerd door de klasse waarvan de objecten moeten worden vergeleken omdat de sorteerlogica binnen dezelfde klasse is gedefinieerd. Anderzijds wordt de Comparator-interface niet geïmplementeerd door de klasse waarvan de objecten moeten worden vergeleken omdat de sorteerlogica is gedefinieerd in de afzonderlijke klassen, waarbij elke klasse sortering definieert op een enkel gegevenselement van het object en deze definiërende klassen de Comparator-interface implementeren .
  3. De vergelijkbare interface ligt in het pakket java.lang terwijl de interface Comparator in het pakket java.util ligt.
  4. De vergelijkbare interface declareert slechts één methode die is te vergelijken met (Object obj), terwijl de Comparator-interface twee methoden declareert, namelijk (Object obj1, Object obj2) en is gelijk aan (Object obj).
  5. De methode compare to (Object obj) in Comparable vergelijkt methode aanroepend object met het opgegeven object doorgegeven aan de methode overwegende dat de vergelijking (Object obj1, Object obj2) methode van Comparator de objecten obj1 vergelijkt met obj2 die worden doorgegeven aan de methode.
  6. De klasse Collections biedt een sorteermethode "Collections.sort (Lijst lst)" om de objecten van het vergelijkbare type te sorteren. De klasse Collections biedt sorteringsmethode Collections.sort (Lijst, Comparator) om de objecten van het Comparator-type te sorteren.

Conclusie:

Als u de objecten in de natuurlijke volgorde wilt sorteren, kunt u de vergelijkbare interface anders gebruiken, anders wilt u de objecten sorteren op basis van een attribuut en vervolgens wordt de Comparator-interface gebruikt.

Top