Cosa c'è di paragonabile in Java?
Comparable in Java è un oggetto per confrontarsi con un altro oggetto. Aiuta a ordinare l'elenco degli oggetti personalizzati. L'interfaccia java.lang.Comparable dovrebbe essere implementata da una classe per confrontare le sue istanze. L'array di oggetti che implementano un'interfaccia comparabile viene ordinato automaticamente dai metodi Arrays.sort e Collections.sort.
In questo tutorial Comparator vs Comparable in Java, imparerai:
- Cosa c'è di paragonabile in Java?
- Cos'è il comparatore in Java?
- Metodo utilizzato in Comparable:
- Metodo utilizzato nel comparatore:
- Differenza tra Comparable vs Comparator in Java
- Best practice durante l'utilizzo di Comparator e Comparable in Java
Cos'è il comparatore in Java?
Il comparatore in Java è un oggetto per confrontare diversi oggetti di classi diverse. L'interfaccia del comparatore in Java viene utilizzata anche per disporre gli oggetti delle classi definite dall'utente. Include due importanti metodi di interfaccia di confronto noti come compare (Object obj1, Object obj2) ed equals (Object element).
PRINCIPALI DIFFERENZE:
- Comparable fornisce il metodo compareTo () per ordinare gli elementi in Java mentre Comparator fornisce il metodo compare () per ordinare gli elementi in Java.
- L'interfaccia comparabile è presente nel pacchetto java.lang mentre l'interfaccia di confronto è presente nel pacchetto java.util.
- Comparable fornisce una singola sequenza di ordinamento mentre Comparator fornisce più sequenze di ordinamento.
- Comparable influisce sulla classe originale mentre comparator non influisce sulla classe originale.
Metodo utilizzato in Comparable:
Di seguito è riportato un metodo importante utilizzato nell'interfaccia Comparable:
Confrontare con():
Il metodo CompareTo () viene utilizzato per eseguire l'ordinamento naturale su una stringa. Il significato di ordinamento naturale è l'ordinamento che si applica all'oggetto, ad esempio, ordine numerico per l'ordinamento di numeri interi, ordine alfabetico per String, ecc.
La sintassi del metodo CompareTo () è la seguente:
int compareTo(T obj)
Nella sintassi precedente, T indica il tipo di oggetti che stai per confrontare.
Il metodo CompareTo () confronta l'oggetto con T obj.
Produzione:
- Restituisce 0 se i valori sono uguali.
- Nel caso in cui, se l'oggetto ha un valore inferiore, questo metodo restituisce un valore negativo.
- Se l'oggetto ha un valore più alto, restituisce un valore positivo.
Esempio del metodo CompareTo ():
Il seguente programma di esempio comparabile Java mostra il confronto di due caratteri, "a" e "b". Il carattere "a" viene prima della "b" in ordine alfabetico.
Pertanto, l'output è -1. Il carattere "b" viene dopo "a" in ordine alfabetico. Quindi l'output è 1. I caratteri "a" e "b" sono entrambi equivalenti. Quindi l'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"));}}
Produzione
Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0
Metodo utilizzato nel comparatore:
Di seguito sono riportati i metodi importanti utilizzati nell'interfaccia di confronto:
Confrontare():
Compare () consente di ordinare gli oggetti. Per fare ciò, devi creare una classe che implementa l'interfaccia di confronto. Dopodiché, devi sovrascrivere il suo metodo di confronto.
La sintassi del metodo compare () è la seguente:
compare(Object obj1, Object obj2)
Nella sintassi sopra, obj1 e obj2 sono due oggetti che devi confrontare usando il metodo compare ().
Produzione:
- Restituisce un numero intero negativo se il primo argomento è minore del secondo.
- Restituisce zero se il primo argomento e il secondo argomento sono uguali.
- Questo metodo può restituire un numero intero positivo, nel caso in cui il primo argomento sia maggiore del secondo.
Devi assicurarti che la relazione sia transitiva. Ad esempio, ((compare (a, b)> 0) && (compare (b, c)> 0)) che implica confronta (a, c)> 0.
Esempio di metodo di confronto:
Nel programma seguente dell'esempio del comparatore Java, ci sono 6 variabili. "x", "y", "p", "q", "r" e "s". L'output è -1 in quanto il valore di "x", 20 è inferiore al valore di "y", 30. L'output è 0 perché il valore di "p", 40 è uguale al valore di "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));}}
Produzione:
-101
È uguale a():
Equals () verifica se l'oggetto numero è uguale all'oggetto, che viene passato come argomento o meno.
La sintassi del metodo equals () è la seguente:
public boolean è uguale a (Object o)
Questo metodo accetta due parametri 1) qualsiasi oggetto 2) valore di ritorno. Restituisce vero se l'argomento passato non è nullo ed è un oggetto di tipo simile con lo stesso valore numerico.
Esempio di metodo uguale:
Nell'esempio seguente, stiamo confrontando le quattro variabili tra loro. Tre variabili sono di tipo integer e una di tipo short. Il primo risultato è falso in quanto il valore di p, che è 5, non è uguale al valore di q, che è 20.
Il secondo risultato è vero perché il valore della variabile p e r è lo stesso, che è 5. Infine, l'output è falso, poiché le variabili p e s hanno valori assegnati diversi.
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));}}
Produzione
falsetruefalse
Differenza tra Comparable vs Comparator in Java

Differenza tra Comparable vs Comparator in Java
Ecco le principali differenze tra Java Comparable e Comparator:
Paragonabile | Comparatore |
Comparable fornisce il metodo compareTo () per ordinare gli elementi in Java. | Il comparatore fornisce il metodo compare () per ordinare gli elementi in Java. |
Un'interfaccia comparabile è presente nel pacchetto java.lang. | L'interfaccia del comparatore è presente nel pacchetto java.util. |
La logica dell'ordinamento deve essere nella stessa classe di cui si desidera ordinare l'oggetto. | La logica dell'ordinamento dovrebbe essere in classi separate per scrivere ordinamenti diversi in base a diversi attributi degli oggetti. |
La classe di cui si desidera ordinare gli oggetti deve implementare un'interfaccia comparabile. | La classe, di cui si desidera ordinare gli oggetti, non è necessaria per implementare un'interfaccia di confronto. |
Fornisce singole sequenze di ordinamento. | Fornisce più sequenze di ordinamento. |
Questo metodo può ordinare i dati in base all'ordinamento naturale. | Questo metodo ordina i dati in base all'ordinamento personalizzato. |
Colpisce la classe originale. cioè, la classe effettiva viene modificata. | Non influisce sulla classe originale, ovvero la classe effettiva non viene modificata. |
Implementato frequentemente nell'API da: Calendar, classi wrapper, Date e String. | È implementato per ordinare le istanze di classi di terze parti. |
Tutte le classi wrapper e la classe String implementano un'interfaccia comparabile. | Le uniche classi implementate di Comparator sono Collator e RuleBasedColator. |
Best practice durante l'utilizzo di Comparator e Comparable in Java
- Utilizzare un'interfaccia comparabile quando il confronto è standard per la classe specifica.
- Puoi usare lambda con un comparatore.
- Molte classi principali disponibili in implementano un'interfaccia comparabile.
- È possibile utilizzare TreeSet e TreeMap o durante l'ordinamento di Set o Map.
- Il metodo compareTo () funziona sia con comparator che con comparable.
- Usa l'interfaccia di confronto solo quando
- Il metodo compareTo () restituirà un numero intero positivo se il primo oggetto è maggiore dell'altro, negativo se è inferiore e zero se entrambi sono uguali.