Raccomandato, 2024

Scelta Del Redattore

Differenza tra comparabili e comparatori in Java

Comparabile e Comparatore sono entrambe le interfacce generiche in Java utilizzate per confrontare gli elementi di dati degli oggetti. L'interfaccia Comparable è presente nel pacchetto java.lang e l'interfaccia di Comparator è presente nel pacchetto java.util. La differenza fondamentale tra le interfacce Comparable e Comparator è che l'interfaccia Comparable fornisce la singola sequenza di ordinamento mentre, l'interfaccia di Comparator fornisce le sequenze multiple di ordinamento. Ci sono alcune altre differenze tra l'interfaccia Comparable e Comparator che studieremo nel grafico di confronto.

Grafico comparativo

Base per il confrontoparagonabilecomparatore
Di baseL'interfaccia comparabile consente solo una singola sequenza di ordinamento.L'interfaccia di Comparator consente più sequenze di ordinamento.
PacchiL'interfaccia Comparable è presente nel pacchetto java.lang.L'interfaccia di Comparator è presente nel pacchetto java.util.
metodiL'interfaccia comparabile contiene solo un singolo metodo
public int compareTo (Object obj);
L'interfaccia di Comparator contiene due metodi
public int compare (Object obj1, Object obj2)
boolean equals (Object obj)
ImplementazioneL'interfaccia comparabile è implementata dalla classe i cui oggetti devono essere confrontati.L'interfaccia di confronto è implementata da una classe sperate invece che dalla classe i cui oggetti devono essere confrontati.
ConfrontoIl metodo compareTo (Object obj) confronta l'oggetto utilizzato per invocare il metodo con l'oggetto specificato che passa al metodo.Il metodo compare (Object obj1, Object obj2) confronta sia gli oggetti specificati che vengono passati al metodo.
Lista / ArrayQuando una lista dell'oggetto di tipo Comparable deve essere confrontata, la classe Collection fornisce un metodo cioè Collections.sort (List lst).Quando una lista di oggetti di tipo Comparable deve essere confrontata la classe Collection fornisce un metodo ie
Collections.sort (elenco, comparatore).

Definizione di Comparabile

Comparabile è un'interfaccia disponibile nel pacchetto java.lang. Una classe implementa l'interfaccia di Comparator per ordinare il suo oggetto in ordine naturale. Gli oggetti sono ordinati in ordine naturale significa che gli oggetti vengono confrontati con i loro valori ASCII. Le classi che implementano l'interfaccia Comparable sono classi Byte, Character, Double, Float, Long, Short, String e Integer. Anche la classe Date e Calander implementa anche l'interfaccia Comparable.

L'interfaccia Comparable contiene solo un metodo che è CompareTo (Object obj). Questo metodo confronta l'oggetto utilizzato per richiamare il metodo con l'oggetto specificato nel parametro. La sintassi del metodo è la seguente:

 public int compareTo (Object obj); 

Il metodo CompareTo (Object obj) restituisce 0, quando sia l'oggetto confrontato dal metodo contiene lo stesso valore, che restituisce -ve valore se l'oggetto di richiamo è più piccolo di quello specificato dell'oggetto e restituisce + ve valore se l'oggetto di richiamo ha maggiore valore rispetto all'oggetto specificato. La classe Collections fornisce un metodo di ordinamento per ordinare gli elementi della lista. Gli elementi list (e array) di tipo Comparable possono essere ordinati usando il metodo "Collections.sort (List lst)".

Definizione di Comparatore

Comparator è un'interfaccia disponibile nel pacchetto java.util. Il comparatore di interfaccia non è implementato sulla classe i cui oggetti devono essere confrontati, invece la classe separata implementa l'interfaccia di Comparator in modo che la logica di ordinamento venga applicata a ciascun elemento di dati dell'oggetto in una classe diversa. Il comparatore contiene due metodi come segue:

 public int compare (Object obj1, Object obj2) e boolean equals (Object obj) 

Il metodo compare () sopra confronta il primo oggetto obj1, con il secondo oggetto obj2. Il metodo compare () restituisce 0 quando entrambi gli oggetti confrontati con il metodo contengono lo stesso valore, restituisce -ve valore se l'oggetto obj1 è minore di allora l'oggetto obj2 e restituisce + ve valore se l'oggetto obj1 ha un valore maggiore rispetto a all'oggetto obj2. I metodi equals () verificano se l'oggetto specificato è uguale all'oggetto di richiamo. Il metodo equals () restituisce true se entrambi gli oggetti confrontati sono uguali, altrimenti restituisce false . La classe Collections fornisce il metodo per ordinare gli elementi di tipo list e comparator. Gli elementi di elenco dei tipi di comparatore sono ordinati secondo il metodo Collections.sort (Elenco, Comparatore).

Differenze chiave tra comparabili e comparatori

  1. L'interfaccia comparabile consente una singola sequenza di ordinamento che significa che è possibile confrontare solo un singolo elemento di dati dell'oggetto nel metodo compareTo () dall'altra l'interfaccia di Comparator consente più sequenze di ordinamento che significano che è possibile confrontare più elementi di dati dell'oggetto.
  2. L'interfaccia Comparable è implementata dalla classe i cui oggetti devono essere confrontati perché la logica di ordinamento è definita all'interno della stessa classe. D'altra parte, l'interfaccia di Comparator non è implementata dalla classe i cui oggetti devono essere confrontati perché la logica di ordinamento è definita nelle classi separate dove ogni classe definisce l'ordinamento su un singolo elemento di dati dell'oggetto e queste classi di definizione implementano l'interfaccia di Comparator .
  3. L'interfaccia Comparable si trova all'interno del pacchetto java.lang mentre l'interfaccia di Comparator si trova all'interno del pacchetto java.util.
  4. L'interfaccia Comparable dichiara solo un metodo confrontaTo (Object obj) mentre, l'interfaccia di Comparator dichiara due metodi che sono, compare (Object obj1, Object obj2) ed equals (Object obj).
  5. Il metodo compareTo (Object obj) in Comparable compares metodo invocando oggetto con l'oggetto specificato passato al metodo considerando, il metodo di confronto (Object obj1, Object obj2) di Comparator confronta gli oggetti obj1 con obj2 che vengono passati al metodo.
  6. La classe Collections fornisce un metodo di ordinamento "Collections.sort (List lst)" per ordinare gli oggetti del tipo Comparable. La classe Raccolte fornisce il metodo di ordinamento Collections.sort (Elenco, Comparatore) per ordinare gli oggetti del tipo Comparatore.

Conclusione:

Se si desidera ordinare gli oggetti nell'ordinamento naturale, è possibile utilizzare l'interfaccia confrontabile che si desidera ordinare gli oggetti in base a qualsiasi attributo, quindi viene utilizzata l'interfaccia di Comparatore.

Top