Forskel mellem sammenlignelig og komparator i Java

Indholdsfortegnelse:

Anonim

Hvad kan sammenlignes i Java?

Sammenlignelig i Java er et objekt, der skal sammenlignes med et andet objekt. Det hjælper med at sortere listen over brugerdefinerede objekter. Java.lang.Comparable interface skal implementeres af en klasse for at sammenligne dens forekomster. Array af objekter, der implementerer en sammenlignelig grænseflade, sorteres automatisk efter metoderne Arrays.sort og Collections.sort.

I denne Comparator vs Comparable i Java-tutorial lærer du:

  • Hvad kan sammenlignes i Java?
  • Hvad er Comparator i Java?
  • Metode anvendt i sammenlignelig:
  • Metode anvendt i komparator:
  • Forskel mellem sammenlignelig vs komparator i Java
  • Bedste fremgangsmåder, når du bruger komparator og sammenlignelig i Java

Hvad er Comparator i Java?

Comparator i Java er et objekt til sammenligning af forskellige objekter i forskellige klasser. Comparator-interface i Java bruges også til at arrangere objekterne i brugerdefinerede klasser. Den inkluderer to vigtige komparatorgrænseflademetoder kendt som sammenligning (Objekt obj1, Objekt obj2) og lig med (Objektelement).

Nøgleforskelle:

  • Comparable giver CompareTo () -metode til at sortere elementer i Java, mens Comparator giver Compare () -metode til at sortere elementer i Java.
  • Sammenlignelig grænseflade findes i java.lang-pakken, mens sammenligningsgrænseflade findes i java.util-pakke.
  • Comparable giver enkelt sorteringssekvens, mens Comparator giver flere sorteringssekvenser.
  • Sammenlignelig påvirker den oprindelige klasse, mens komparator ikke påvirker den oprindelige klasse.

Metode anvendt i sammenlignelig:

Følgende er en vigtig metode, der anvendes i den sammenlignelige grænseflade:

Sammenligne med():

Metoden CompareTo () bruges til at udføre naturlig sortering på streng. Betydningen af ​​naturlig sortering er den sorteringsrækkefølge, der gælder på objektet, f.eks. Numerisk rækkefølge for sortering af heltal, alfabetisk rækkefølge for streng osv.

Syntaksen for CompareTo () -metoden er som følger:

int compareTo(T obj)

I ovenstående syntaks betyder T den type objekter, du skal sammenligne.

Metoden CompareTo () sammenligner objektet med T obj.

Produktion:

  • Det returnerer 0, hvis værdierne er ens.
  • Hvis objektet har en mindre værdi, returnerer denne metode en negativ værdi.
  • Hvis objektet har en højere værdi, returnerer den en positiv værdi.

CompareTo () Metodeeksempel:

Det følgende program med Java-sammenligneligt eksempel viser sammenligningen af ​​to tegn, "a" og "b". Tegn "a" kommer før "b" alfabetisk.

Derfor er output -1. Tegn "b" kommer efter "a" alfabetisk. Derfor er output 1. Tegn "a" og "b" er begge ækvivalente. Derfor er output 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

Metode anvendt i komparator:

Følgende er de vigtige metoder, der anvendes i komparatorgrænsefladen:

Sammenligne():

Sammenlign () giver dig mulighed for at bestille objekter. For at gøre dette skal du oprette en klasse, der implementerer komparatorgrænseflade. Efter dette skal du tilsidesætte sammenligningsmetoden.

Syntaksen for sammenligningsmetoden () er som følger:

compare(Object obj1, Object obj2)

I ovenstående syntaks er obj1 og obj2 to objekter, som du skal sammenligne ved hjælp af sammenligningsmetoden ().

Produktion:

  • Det returnerer et negativt heltal, hvis det første argument er mindre end det andet.
  • Returnerer nul, hvis det første argument og det andet argument er ens.
  • Denne metode kan returnere et positivt heltal, hvis det første argument er større end det andet.

Du er nødt til at sikre, at forholdet er midlertidigt. For eksempel ((sammenlign (a, b)> 0) && (sammenlign (b, c)> 0)), hvilket indebærer sammenligning (a, c)> 0.

Sammenlign metode Eksempel:

I nedenstående program med Java-komparatoreksempel er der 6 variabler. "x", "y", "p", "q", "r" og "s". Outputtet er -1 som værdien af ​​"x", 20 er mindre end værdien af ​​"y", 30. Outputtet er 0, fordi værdien af ​​"p", 40 er lig med værdien af ​​"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

Lige med():

Lig () verificerer, om nummerobjektet er lig med objektet, som sendes som et argument eller ej.

Syntaksen for metoden lig () er som følger:

offentlige boolske lig (Objekt o)

Denne metode tager to parametre 1) ethvert objekt 2) returværdi. Det returnerer sandt, hvis det godkendte argument ikke er nul og er et objekt af den samme type med den samme numeriske værdi.

Ligemetodeeksempel:

I nedenstående eksempel sammenligner vi de fire variabler med hinanden. Tre variabler er af typen heltal og en af ​​typen kort. Det første resultat er falsk, da værdien af ​​p, som er 5, ikke er lig med værdien af ​​q, som er 20.

Det andet resultat er sandt, fordi værdien af ​​variablen p og r er den samme, hvilket er 5. Endelig er output falsk, da variabel p og s har forskellige tildelte værdier.

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

Forskel mellem sammenlignelig vs komparator i Java

Forskel mellem sammenlignelig vs komparator i Java

Her er de vigtigste forskelle mellem Java Comparable vs Comparator:

Sammenlignelig Komparator
Comparable giver comparTo () -metoden til at sortere elementer i Java. Comparator giver sammenligningsmetoden () til at sortere elementer i Java.
Sammenlignelig grænseflade findes i java.lang-pakken. Comparator-interface findes i java.util-pakken.
Sorteringslogikken skal være i samme klasse, hvis objekt du skal sortere. Sorteringslogikken skal være i separat klasse for at skrive forskellig sortering baseret på forskellige attributter for objekter.
Den klasse, hvis objekter du vil sortere, skal implementere en sammenlignelig grænseflade. Klasse, hvis objekter du vil sortere, behøver ikke at implementere en komparatorgrænseflade.
Det giver enkelt sorteringssekvenser. Det giver flere sorteringssekvenser.
Denne metode kan sortere dataene efter den naturlige sorteringsrækkefølge. Denne metode sorterer dataene efter den tilpassede sorteringsrækkefølge.
Det påvirker den oprindelige klasse. dvs. faktisk klasse ændres. Det påvirker ikke den oprindelige klasse, dvs. den aktuelle klasse ændres ikke.
Implementeres ofte i API'en af: Kalender, Wrapper-klasser, Dato og String. Det er implementeret til at sortere forekomster af tredjepartsklasser.
Alle indpakningsklasser og strengklasser implementerer sammenlignelig grænseflade. De eneste implementerede klasser af Comparator er Collator og RuleBasedColator.

Bedste fremgangsmåder, når du bruger komparator og sammenlignelig i Java

  • Brug en sammenlignelig grænseflade, når sammenligningen er standard for den specifikke klasse.
  • Du kan bruge lambdas med en komparator.
  • Mange kerneklasser er tilgængelige i implementerer en sammenlignelig grænseflade.
  • Det er muligt at bruge TreeSet og TreeMap eller mens du sorterer Set eller Map.
  • Metoden CompareTo () fungerer både med komparator og sammenlignbar.
  • Brug kun komparatorgrænsefladen, når du
  • Metoden CompareTo () returnerer et positivt heltal, hvis det første objekt er større end det andet, negativt, hvis det er lavere, og nul, hvis begge er ens.