Verschil tussen vergelijkend en vergelijkend in Java

Inhoudsopgave:

Anonim

Wat is vergelijkbaar in Java?

Vergelijkbaar in Java is een object om zichzelf te vergelijken met een ander object. Het helpt om de lijst met aangepaste objecten te sorteren. De java.lang.Comparable-interface moet door een klasse worden geïmplementeerd om zijn instanties te vergelijken. Een reeks objecten die een vergelijkbare interface implementeren, wordt automatisch gesorteerd op basis van de methoden Arrays.sort en Collections.sort.

In deze Comparator vs Comparable in Java-zelfstudie leert u:

  • Wat is vergelijkbaar in Java?
  • Wat is Comparator in Java?
  • Methode gebruikt in Vergelijkbaar:
  • Methode gebruikt in Comparator:
  • Verschil tussen Comparable versus Comparator in Java
  • Best practices bij het gebruik van Comparator en vergelijkbaar in Java

Wat is Comparator in Java?

Comparator in Java is een object voor het vergelijken van verschillende objecten van verschillende klassen. De vergelijkingsinterface in Java wordt ook gebruikt om de objecten van door de gebruiker gedefinieerde klassen te rangschikken. Het bevat twee belangrijke comparator-interfacemethoden die bekend staan ​​als vergelijken (Object obj1, Object obj2) en is gelijk aan (Object-element).

BELANGRIJKSTE VERSCHILLEN:

  • Comparable biedt de methode CompareTo () om elementen in Java te sorteren, terwijl Comparator de methode Compare () biedt om elementen in Java te sorteren.
  • Een vergelijkbare interface is aanwezig in het java.lang-pakket, terwijl de Comparator-interface aanwezig is in het java.util-pakket.
  • Comparable biedt een enkele sorteervolgorde, terwijl Comparator meerdere sorteervolgordes biedt.
  • Vergelijkbaar heeft invloed op de oorspronkelijke klasse, terwijl de vergelijker geen invloed heeft op de oorspronkelijke klasse.

Methode gebruikt in Vergelijkbaar:

Hieronder volgt een belangrijke methode die wordt gebruikt in de vergelijkbare interface:

Vergelijk met():

De methode CompareTo () wordt gebruikt om een ​​natuurlijke sortering op tekenreeks uit te voeren. De betekenis van natuurlijk sorteren is de sorteervolgorde die van toepassing is op het object, bijvoorbeeld numerieke volgorde voor het sorteren van gehele getallen, alfabetische volgorde voor String, etc.

De syntaxis van de methode CompareTo () is als volgt:

int compareTo(T obj)

In de bovenstaande syntaxis geeft T het type objecten aan dat u gaat vergelijken.

CompareTo () methode vergelijkt het object met T obj.

Uitgang:

  • Het retourneert 0 als de waarden gelijk zijn.
  • Als het object een lagere waarde heeft, retourneert deze methode een negatieve waarde.
  • Als het object een hogere waarde heeft, retourneert het een positieve waarde.

CompareTo () Methode Voorbeeld:

Het volgende Java-vergelijkbare voorbeeld toont de vergelijking van twee karakters, "a" en "b". Teken "a" komt alfabetisch voor "b".

Daarom is de uitvoer -1. Teken "b" komt alfabetisch na "a". De output is dus 1. Teken "a" en "b" zijn beide equivalent. Daarom is de uitvoer 0.

public class Sample_String {public static void main(String[] args) {String str_Sample = "a";System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));str_Sample = "b";System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));str_Sample = "b";System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));}}

Uitvoer

Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0

Methode gebruikt in Comparator:

Hieronder volgen de belangrijke methoden die worden gebruikt in de comparator-interface:

Vergelijken():

Compare () stelt u in staat objecten te bestellen. Om dit te doen, moet u een klasse maken die de vergelijkingsinterface implementeert. Hierna moet u de vergelijkingsmethode overschrijven.

De syntaxis van de methode Compare () is als volgt:

compare(Object obj1, Object obj2)

In de bovenstaande syntaxis zijn obj1 en obj2 twee objecten die u moet vergelijken met de methode Compare ().

Uitgang:

  • Het retourneert een negatief geheel getal als het eerste argument kleiner is dan het tweede.
  • Geeft nul terug als het eerste argument en het tweede argument gelijk zijn.
  • Deze methode kan een positief geheel getal retourneren als het eerste argument groter is dan het tweede.

Je moet ervoor zorgen dat de relatie transitief is. Bijvoorbeeld ((vergelijk (a, b)> 0) && (vergelijk (b, c)> 0)) wat impliceert dat vergelijk (a, c)> 0.

Vergelijk Methode Voorbeeld:

In het onderstaande voorbeeld van een Java-vergelijkingsprogramma zijn er 6 variabelen. "x", "y", "p", "q", "r" en "s". De uitvoer is -1 als de waarde van "x", 20 is kleiner dan de waarde van "y", 30. De uitvoer is 0 omdat de waarde van "p", 40 gelijk is aan de waarde van "q", 40 .

import java.lang.Integer;public class example {public static void main(String args[]){int x = 20;int y = 30;// as 10 less than 20,// Output will be a value less than zeroSystem.out.println(Integer.compare(x, y));int p = 40;int q = 40;// as 30 equals 30,// Output will be zeroSystem.out.println(Integer.compare(p, q));int r = 20;int s = 7;// as 15 is greater than 8,// Output will be a value greater than zeroSystem.out.println(Integer.compare(r, s));}}

Uitgang:

-101

Is gelijk aan ():

Equals () verifieert of het nummerobject gelijk is aan het object, dat als argument wordt doorgegeven of niet.

De syntaxis van de methode equals () is als volgt:

openbare boolean is gelijk aan (Object o)

Deze methode heeft twee parameters nodig: 1) elk object 2) retourwaarde. Het retourneert true als het doorgegeven argument niet null is en een object van hetzelfde type is met dezelfde numerieke waarde.

Is gelijk aan methodevoorbeeld:

In het onderstaande voorbeeld vergelijken we de vier variabelen met elkaar. Drie variabelen zijn van het type integer en één van het type short. Het eerste resultaat is false omdat de waarde van p, die 5 is, niet gelijk is aan de waarde van q, die 20 is.

Het tweede resultaat is waar omdat de waarde van variabele p en r hetzelfde is, namelijk 5. Ten slotte is de uitvoer false, aangezien variabele p en s verschillende toegewezen waarden hebben.

public class Test {public static void main(String args[]) {Integer p = 5;Integer q = 20;Integer r =5;Short s = 5;System.out.println(p.equals(q));System.out.println(p.equals(r));System.out.println(p.equals(s));}}

Uitvoer

falsetruefalse

Verschil tussen Comparable versus Comparator in Java

Verschil tussen Comparable versus Comparator in Java

Dit zijn de belangrijkste verschillen tussen Java Comparable versus Comparator:

Vergelijkbaar Comparator
Comparable biedt de methode CompareTo () om elementen in Java te sorteren. Comparator biedt de methode Compare () om elementen in Java te sorteren.
Een vergelijkbare interface is aanwezig in het pakket java.lang. De vergelijkingsinterface is aanwezig in het pakket java.util.
De logica van het sorteren moet zich in dezelfde klasse bevinden waarvan u het object gaat sorteren. De logica van het sorteren moet in een aparte klasse zijn om verschillende sorteringen te schrijven op basis van verschillende attributen van objecten.
De klasse waarvan u de objecten wilt sorteren, moet een vergelijkbare interface implementeren. Klasse, waarvan u de objecten wilt sorteren, hoeft geen vergelijkingsinterface te implementeren.
Het biedt enkele sorteerreeksen. Het biedt meerdere sorteervolgordes.
Deze methode kan de gegevens sorteren op de natuurlijke sorteervolgorde. Deze methode sorteert de gegevens volgens de aangepaste sorteervolgorde.
Het heeft invloed op de oorspronkelijke klasse. dwz de feitelijke klasse wordt gewijzigd. Het heeft geen invloed op de oorspronkelijke klasse, dwz de werkelijke klasse wordt niet gewijzigd.
Regelmatig geïmplementeerd in de API door: Kalender, Wrapper-klassen, Datum en String. Het is geïmplementeerd om instanties van klassen van derden te sorteren.
Alle wrapper-klassen en String-klasse implementeren een vergelijkbare interface. De enige geïmplementeerde klassen van Comparator zijn Collator en RuleBasedColator.

Best practices bij het gebruik van Comparator en vergelijkbaar in Java

  • Gebruik een vergelijkbare interface als de vergelijking standaard is voor de specifieke klasse.
  • U kunt lambda's gebruiken met een comparator.
  • Veel beschikbare kernklassen implementeren een vergelijkbare interface.
  • Het is mogelijk om TreeSet en TreeMap te gebruiken of tijdens het sorteren van Set of Map.
  • De methode CompareTo () werkt zowel met comparator als vergelijkbaar.
  • Gebruik de comparator-interface alleen als u
  • De methode CompareTo () retourneert een positief geheel getal als het eerste object groter is dan het andere, negatief als het lager is en nul als beide hetzelfde zijn.