Skillnad mellan jämförbar och komparator i Java

Innehållsförteckning:

Anonim

Vad är jämförbart i Java?

Jämförbar i Java är ett objekt att jämföra sig med ett annat objekt. Det hjälper till att sortera listan över anpassade objekt. Java.lang.Comparable-gränssnittet bör implementeras av en klass för att jämföra dess instanser. Array av objekt som implementerar ett jämförbart gränssnitt sorteras automatiskt efter metoderna Arrays.sort och Collections.sort.

I denna Comparator vs Comparable i Java-handledning lär du dig:

  • Vad är jämförbart i Java?
  • Vad är Comparator i Java?
  • Metod som används i jämförbar:
  • Metod som används i komparator:
  • Skillnad mellan jämförbar jämförelse i Java
  • Bästa praxis när du använder Comparator och Comparable i Java

Vad är Comparator i Java?

Comparator i Java är ett objekt för att jämföra olika objekt i olika klasser. Komparatorgränssnittet i Java används också för att ordna objekten för användardefinierade klasser. Den innehåller två viktiga komparatorgränssnittsmetoder som kallas jämför (Objekt obj1, Objekt obj2) och lika (Objektelement).

VÄSENTLIGA SKILLNADER:

  • Comparable tillhandahåller comparTo () -metoden för att sortera element i Java medan Comparator ger jämför () -metoden för att sortera element i Java.
  • Jämförbara gränssnitt finns i paketet java.lang medan det jämförande gränssnittet finns i paketet java.util.
  • Comparable ger enstaka sorteringssekvenser medan Comparator tillhandahåller flera sorteringssekvenser.
  • Jämförbar påverkar den ursprungliga klassen medan jämföraren inte påverkar den ursprungliga klassen.

Metod som används i jämförbar:

Följande är en viktig metod som används i det jämförbara gränssnittet:

Jämföra med():

Metoden CompareTo () används för att utföra naturlig sortering på strängar. Betydelsen av naturlig sortering är den sorteringsordning som gäller för objektet, t.ex. numerisk ordning för att sortera heltal, alfabetisk ordning för String, etc.

Syntaxen för CompareTo () -metoden är som följer:

int compareTo(T obj)

I ovanstående syntax betyder T vilken typ av objekt du ska jämföra.

Metoden CompareTo () jämför objektet med T-obj.

Produktion:

  • Det returnerar 0 om värdena är lika.
  • Om objektet har ett mindre värde returnerar den här metoden ett negativt värde.
  • Om objektet har ett högre värde returnerar det ett positivt värde.

CompareTo () Metod Exempel:

Följande program med Java-jämförbart exempel visar jämförelsen av två tecken, "a" och "b". Tecken "a" kommer före "b" alfabetiskt.

Därför är produktionen -1. Tecken "b" kommer efter "a" alfabetiskt. Följaktligen är utdata 1. Tecken "a" och "b" är båda ekvivalenta. Därför är utgången 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"));}}

Produktion

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

Metod som används i komparator:

Följande är de viktiga metoderna som används i komparatorgränssnittet:

Jämföra():

Jämför () gör att du kan beställa objekt. För att göra detta måste du skapa en klass som implementerar jämförelsegränssnittet. Efter detta måste du åsidosätta jämförelsemetoden.

Syntaxen för jämförelsemetoden () är som följer:

compare(Object obj1, Object obj2)

I ovanstående syntax är obj1 och obj2 två objekt som du måste jämföra med jämförelsemetoden ().

Produktion:

  • Det returnerar ett negativt heltal om det första argumentet är mindre än det andra.
  • Returnerar noll om det första argumentet och det andra argumentet är lika.
  • Denna metod kan returnera ett positivt heltal, om det första argumentet är större än det andra.

Du måste se till att förhållandet är övergående. Till exempel ((jämför (a, b)> 0) && (jämför (b, c)> 0)) vilket innebär jämför (a, c)> 0.

Jämför metod Exempel:

I nedanstående program för Java-jämförelseexempel finns det 6 variabler. "x", "y", "p", "q", "r" och "s". Utgången är -1 som värdet på "x", 20 är mindre än värdet på "y", 30. Utgången är 0 eftersom värdet på "p", 40 är lika med värdet på "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));}}

Produktion:

-101

Lika med ():

Equals () verifierar om nummerobjektet är lika med objektet, vilket skickas som argument eller inte.

Syntaxen för metoden equals () är som följer:

offentliga booleska lika (Objekt o)

Denna metod tar två parametrar 1) vilket objekt som helst 2) returvärde. Det returnerar true om det godkända argumentet inte är null och är ett objekt av samma typ som har samma numeriska värde.

Exempel på lika metod:

I exemplet nedan jämför vi de fyra variablerna med varandra. Tre variabler är av typen heltal och en av typen kort. Det första resultatet är falskt eftersom värdet på p, vilket är 5, inte är lika med värdet på q, vilket är 20.

Det andra resultatet är sant eftersom värdet på variabeln p och r är densamma, vilket är 5. Slutligen är utgången falsk, eftersom variabeln p och s har olika tilldelade värden.

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));}}

Produktion

falsetruefalse

Skillnad mellan jämförbar jämförelse i Java

Skillnad mellan jämförbar jämförelse i Java

Här är de viktigaste skillnaderna mellan Java Comparable vs Comparator:

Jämförbar Jämförelse
Comparable ger jämförelsemetoden () för att sortera element i Java. Comparator erbjuder jämförelsemetoden () för att sortera element i Java.
Jämförbart gränssnitt finns i paketet java.lang. Komparatorgränssnittet finns i paketet java.util.
Sorteringslogiken måste vara i samma klass vars objekt du ska sortera. Sorteringslogiken bör vara i separat klass för att skriva olika sorteringar baserat på olika attribut för objekt.
Den klass vars objekt du vill sortera måste implementera ett jämförbart gränssnitt. Klass vars objekt du vill sortera behöver inte implementera ett jämförelsegränssnitt.
Det ger enstaka sorteringssekvenser. Det ger flera sorteringssekvenser.
Denna metod kan sortera data enligt den naturliga sorteringsordningen. Denna metod sorterar data enligt den anpassade sorteringsordningen.
Det påverkar den ursprungliga klassen. dvs. den faktiska klassen ändras. Det påverkar inte den ursprungliga klassen, dvs. den faktiska klassen ändras inte.
Implementeras ofta i API : et av: Kalender, Wrapper-klasser, Datum och String. Den implementeras för att sortera förekomster av tredjepartsklasser.
Alla omslagsklasser och strängklasser implementerar jämförbart gränssnitt. De enda implementerade klasserna av Comparator är Collator och RuleBasedColator.

Bästa praxis när du använder Comparator och Comparable i Java

  • Använd ett jämförbart gränssnitt när jämförelsen är standard för den specifika klassen.
  • Du kan använda lambdas med en komparator.
  • Många kärnklasser finns tillgängliga i ett jämförbart gränssnitt.
  • Det är möjligt att använda TreeSet och TreeMap eller medan du sorterar Set eller Map.
  • Metoden comparTo () fungerar både med jämförare och jämförbar.
  • Använd komparatorgränssnittet bara när du
  • Metoden comparTo () returnerar ett positivt heltal om det första objektet är större än det andra, negativt om det är lägre och noll om båda är desamma.