Differenza tra Comparable e Comparator in Java

Autore: Laura McKinney
Data Della Creazione: 1 Aprile 2021
Data Di Aggiornamento: 4 Maggio 2024
Anonim
Interview Question | Comparable vs Comparator in Java
Video: Interview Question | Comparable vs Comparator in Java

Contenuto

Comparable e Comparator 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 Comparator è presente nel pacchetto java.util. La differenza di base tra le interfacce Comparable e Comparator è che l'interfaccia Comparable fornisce la singola sequenza di ordinamento, mentre l'interfaccia Comparator fornisce le sequenze multiple di ordinamento. Ci sono alcune differenze tra l'interfaccia Comparable e Comparator che studieremo nella Tabella comparativa.


  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione

Base per il confrontoparagonabilecomparatore
Di base L'interfaccia comparabile consente solo una singola sequenza di ordinamento.L'interfaccia Comparator consente sequenze multiple di ordinamento.
Pacchetti L'interfaccia comparabile è presente nel pacchetto java.lang.L'interfaccia di Comparator è presente nel pacchetto java.util.
metodi L'interfaccia comparabile contiene solo un metodo
public int compareTo (Object obj);
L'interfaccia del comparatore contiene due metodi
public int compare (Oggetto obj1, Oggetto obj2)
uguale a booleano (Object obj)
ImplementazioneL'interfaccia comparabile è implementata dalla classe i cui oggetti devono essere confrontati.L'interfaccia del comparatore è implementata da una classe sperate anziché alla classe i cui oggetti devono essere confrontati.
Confronto Il 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 entrambi gli oggetti specificati che vengono passati al metodo.
Lista / ArrayQuando si deve confrontare un elenco di oggetti di tipo Comparabile, la classe Collection fornisce un metodo, ad esempio Collections.sort (List lst).Quando si deve confrontare un elenco di oggetti di tipo Comparabile, la classe Collection fornisce un metodo, ad es.
Collections.sort (Elenco, Comparatore).


Definizione di comparabile

Comparable è un'interfaccia disponibile nel pacchetto java.lang. Una classe implementa l'interfaccia Comparator, per ordinare il suo oggetto in ordine naturale. Gli oggetti sono ordinati in ordine naturale significa che gli oggetti sono confrontati dai 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 comparabile contiene solo un metodo che è CompareTo (Object obj). Questo metodo confronta l'oggetto utilizzato per invocare 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, restituisce -ve valore se l'oggetto invocante è più piccolo di quello specificato e restituisce + ve valore se l'oggetto invocante ha un valore maggiore rispetto all'oggetto specificato. La classe Collections fornisce un metodo di ordinamento per ordinare gli elementi dell'elenco. Gli elementi dell'elenco (e dell'array) di tipo Comparable possono essere ordinati usando il metodo "Collections.sort (List lst)".


Definizione di Comparator

Comparator è un'interfaccia disponibile nel pacchetto java.util. L'interfaccia Comparator non è implementata sulla classe i cui oggetti devono essere confrontati, invece la classe separata implementa l'interfaccia Comparator in modo che la logica di ordinamento sia 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 booleano uguale (Object obj)

Il metodo compare () sopra confronta il primo oggetto obj1, con il secondo oggetto obj2. Il metodo compare () restituisce 0 quando sia l'oggetto confrontato dal metodo contiene lo stesso valore, restituisce -ve valore se l'oggetto obj1 è più piccolo di allora l'oggetto obj2 e ritorna + ve valore se l'oggetto obj1 ha un valore maggiore rispetto all'oggetto obj2. Il metodo equals () verifica se l'oggetto specificato è uguale all'oggetto che invoca. Il metodo equals () restituisce vero se entrambi gli oggetti confrontati sono uguali altrimenti ritorna falso. La classe Collections fornisce il metodo per ordinare gli elementi dell'elenco e del tipo di comparatore. Gli elementi dell'elenco dei tipi di comparatore vengono ordinati in base al metodo Collections.sort (Elenco, Comparatore).

  1. L'interfaccia comparabile consente una singola sequenza di ordinamento, il che significa che è possibile confrontare solo un singolo elemento di dati dell'oggetto nel metodo compareTo () d'altra parte L'interfaccia di confronto consente più sequenze di ordinamento, il che significa che è possibile confrontare più elementi di dati dell'oggetto.
  2. L'interfaccia comparabile è 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 del comparatore non è implementata dalla classe i cui oggetti devono essere confrontati perché la logica di ordinamento è definita nelle classi separate in cui ogni classe definisce l'ordinamento su un singolo elemento di dati dell'oggetto e queste classi di definizione implementano l'interfaccia del comparatore .
  3. L'interfaccia Comparable si trova all'interno del pacchetto java.lang, mentre l'interfaccia Comparator si trova all'interno del pacchetto java.util.
  4. L'interfaccia Comparable dichiara solo un metodo che è compareTo (Object obj) mentre l'interfaccia Comparator dichiara due metodi che sono, compare (Object obj1, Object obj2) ed è uguale a (Object obj).
  5. Il metodo compareTo (Object obj) in Comparable confronta il metodo che richiama l'oggetto con l'oggetto specificato passato al metodo, mentre il metodo compare (Object obj1, Object obj2) del comparatore confronta gli oggetti obj1 con obj2 passati al metodo.
  6. La classe Collections fornisce un metodo di ordinamento "Collections.sort (List lst)" per ordinare gli oggetti di tipo Comparable. La classe Collections fornisce il metodo di ordinamento Collections.sort (List, Comparator) per ordinare gli oggetti di tipo Comparator.

Conclusione:

Se si desidera ordinare gli oggetti nell'ordinamento naturale, è possibile utilizzare l'interfaccia comparabile altrimenti si desidera ordinare gli oggetti in base a qualsiasi attributo, quindi viene utilizzata l'interfaccia Comparator.