Comparabile vs comparatore: differenza tra comparabile e comparatore

Pubblicato: 2020-12-30

Sommario

Comparabile e comparatore: una panoramica

Comparabile e comparatore sono entrambe interfacce nel linguaggio di programmazione Java per determinare il comportamento in cui verranno implementate le classi. Mentre Comparable viene utilizzato su oggetti che sono naturalmente ordinati, l'interfaccia Comparator implementa l'ordinamento prendendo in considerazione gli attributi di un oggetto. Inoltre, l'ordinamento del comparatore prende in considerazione gli oggetti di due classi diverse e Comparabile confronta gli oggetti utilizzando il riferimento "questo".

Ora, che abbiamo stabilito il principio di base su cui funzionano entrambe le interfacce, diamo un'occhiata alle differenze tra le due.

Differenza tra comparabile e comparatore

Metodo di smistamento

Paragonabile

Utilizza la funzione compareTo() per l'ordinamento. Questo è l'unico metodo presente nell'interfaccia di ordinamento comparabile.

compareTo(Object O) prende come argomento un oggetto e lo confronta con un altro dello stesso tipo. Se un oggetto è una stringa, puoi confrontarlo solo con un altro oggetto dello stesso tipo. Lo stesso vale per un oggetto int e così via. compareTo() restituisce un valore intero negativo, positivo o zero in base al risultato dell'ordinamento.

Comparatore

Esistono due metodi per ordinare gli elementi in Comparator: compare() ed equals().

compare(Oggetto O1, Oggetto O2) tiene conto di due argomenti come input e fornisce l'output desiderato. Restituisce un numero intero per indicare come il primo argomento si confronta con il secondo.

  • Se O1 è minore di O2, restituisce un numero intero negativo.
  • Se O1 è maggiore di O2, restituirà un numero intero positivo.
  • Se O1 è uguale a O2, restituisce 0.

equals(Object) prende in considerazione un oggetto come input e lo confronta con il comparatore. Restituisce True se l'oggetto è uguale al comparatore. Garantisce inoltre che l'ordine non cambi.

Pacchetto usato

Paragonabile

Esiste nel pacchetto java.lang di Java.

Comparatore

Esiste nel pacchetto java.util di Java.

Ordinazione e classe

Paragonabile

  • Prende in considerazione gli oggetti che seguono l'ordinamento naturale, cioè hanno la tendenza a ordinarsi da soli. Ad esempio, ordine alfabetico o numerico in caso di nomi, prezzo, stipendio, numero di matricola, età, ecc.
  • È anche importante che entrambi gli oggetti appartengano alla stessa classe.
  • L'interfaccia comparabile confronta il riferimento "questo" con l'oggetto specificato.
  • L'ordinamento mediante Comparable influisce sulla classe effettiva.

Comparatore

  • Questa interfaccia viene utilizzata principalmente per ordinare gli attributi di oggetti specificati. Non hanno bisogno di avere un ordine naturale; può essere personalizzato.
  • La logica di ordinamento deve essere in classi separate per confrontare gli attributi degli oggetti delle due classi in considerazione.
  • La classe effettiva rimane inalterata.

Sequenze e raccolte

Paragonabile

  • Supporta solo sequenze di ordinamento singole. Ciò implica che puoi considerare solo un elemento o attributo di una raccolta come un numero di rotolo o un'età o una posizione.
  • Per ordinare una raccolta di oggetti, matrici o elenchi, è possibile utilizzare Raccolta. sort(Lista) o Matrici. ordina(Elenco). Questo porterà gli oggetti nel loro ordine naturale .

Comparatore

  • Supporta più sequenze di ordinamento. Ciò implica che puoi considerare più elementi o attributi di una raccolta come numero di rotolo, età e grado.
  • È possibile utilizzare un collection.sort(list, comparator) per ordinare una raccolta.

Ecco un riepilogo di tutte le differenze tra Comparable e Comparator

Paragonabile Comparatore
Pacchetto
Java.lang Java.util
Metodo di smistamento
confrontare con() confrontare()
Ordinazione
Ordinamento naturale Ordinazione personalizzata
Tipo di oggetto
Gli oggetti a confronto devono essere dello stesso tipo Vengono considerati oggetti di classi diverse
Influenza sulla classe
La classe viene modificata Non influisce sulla classe
Sequenza di ordinamento
Sequenza di ordinamento singola Sequenza di ordinamento multiplo

Iscriviti ai corsi di sviluppo software delle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Cose da tenere a mente durante l'utilizzo di Comparable e Comparator in Java

  • L'interfaccia comparabile è quella da scegliere se stai vendendo per eseguire un confronto standard per una classe specifica.
  • Il comparatore consente l'uso di lambda.
  • È possibile utilizzare il metodo compareTo() per implementare sia Comparator che Comparable.
  • L'interfaccia del comparatore è consigliata se stai cercando flessibilità nell'ordinamento

Conclusione

Nella maggior parte degli scenari della vita reale, quando ordiniamo, di solito abbiamo in mente una varietà di parametri. Inoltre, poiché l'utilizzo di risultati comparabili nell'ordinamento predefinito e non può essere modificato dinamicamente, è meno pratico di Comparator che consente di personalizzare e scegliere tra diversi metodi di ordinamento in base alle proprie esigenze. Solo per questo motivo, Comparator trova applicazioni più pratiche di Comparable.

Leggi: Alcuni interessanti progetti Java da verificare

Se sei interessato a saperne di più su Java, sullo sviluppo full stack, dai un'occhiata al programma Executive PG di upGrad e IIIT-B in Full-stack Software Development, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, oltre 9 progetti, e incarichi, status di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

Cosa sono le interfacce nei linguaggi di programmazione?

Imparare Java è facile?

Java introduce un paradigma di programmazione orientato agli oggetti, consentendo anche agli sviluppatori Java più inesperti di pensare e creare programmi come uno sviluppatore esperto. Java ha avuto origine dai linguaggi di programmazione C e C++ che sono anche ampiamente utilizzati oggi. Sebbene Java abbia alcune somiglianze con C e C++ in termini di funzionalità, è diventato un linguaggio molto più intuitivo. Poiché la programmazione orientata agli oggetti semplifica la manutenzione e la modifica del codice esistente, anche i programmatori inesperti possono iniziare a lavorare su progetti aziendali. È meno probabile che i nuovi sviluppatori incontrino errori di runtime imprevisti poiché Java viene verificato per gli errori prima dell'esecuzione. Java obbliga i programmatori a specificare correttamente tutti gli elementi del codice, riducendo le possibilità di errori man mano che le applicazioni crescono.

Perché è necessario l'ordinamento in Java?

L'ordinamento si riferisce a un insieme di tecniche per riorganizzare le posizioni degli elementi in una matrice in modo che siano tutti in ordine crescente o decrescente. Un algoritmo di ordinamento decente deve anche garantire che gli elementi con lo stesso valore rimangano nell'array ordinato nello stesso ordine. L'ordinamento è necessario per comprendere in modo approfondito le strutture dei dati e gli algoritmi. Java come linguaggio di programmazione è eccezionalmente versatile e può essere utilizzato per implementare numerosi algoritmi di ordinamento. La maggior parte di questi algoritmi è piuttosto versatile e può essere implementata sia in modo ricorsivo che iterativo.