Che cos'è l'interfaccia di confronto in Java con esempi?
L'interfaccia Comparator contiene i metodi compare() e equals(). Il primo metodo viene utilizzato per calcolare due oggetti restituendo un valore intero. L'altro metodo è utilizzato per calcolare due oggetti comparatori per l'uguaglianza.
Ecco diversi esempi di come utilizzare l'interfaccia Comparator in Java:
Esempio 1: ordinare un elenco in base alla lunghezza
In questo esempio, viene considerato un elenco di stringhe e le ordina in base alla loro lunghezza anziché all'ordine alfabetico:
importare java.util.ArrayList ;
importare java.util.Collections ;
importare java.util.Comparator ;
importare java.util.List ;
pubblico classe Principale {
pubblico statico vuoto principale ( Corda [ ] arg ) {
Elenco < Corda > elenco = nuovo Lista di array <> ( ) ;
elenco. aggiungere ( 'John' ) ;
elenco. aggiungere ( 'Bob' ) ;
elenco. aggiungere ( 'Alice' ) ;
Collezioni . ordinare ( elenco ) ;
Sistema . fuori . println ( elenco ) ;
Collezioni . ordinare ( elenco, nuovo StringLengthComparator ( ) ) ;
Sistema . fuori . println ( elenco ) ;
}
} // Una classe è definita
classe StringLengthComparator implementa Comparatore < Corda > {
pubblico int confrontare ( Corda s1, Corda s2 ) {
ritorno Numero intero . confrontare ( s1. lunghezza ( ) , s2. lunghezza ( ) ) ;
}
}
Di seguito si riporta la descrizione del suddetto codice:
- Creare innanzitutto una classe Comparator personalizzata denominata StringLengthComparator che implementa l'interfaccia Comparator
. - Sovrascrive il metodo compare() per confrontare la lunghezza di due stringhe.
- Alla fine, passa un'istanza al metodo.sort() per ordinare l'elenco usando il nostro comparatore personalizzato.
Produzione
Il primo output è il risultato dell'ordinamento dell'elenco utilizzando l'ordinamento naturale, mentre il secondo output è il risultato dell'ordinamento dell'elenco utilizzando il nostro comparatore personalizzato in base alla lunghezza di ciascuna stringa.
Esempio 2: ordinamento di oggetti in base a un campo specifico
Un altro esempio viene condotto per ordinare gli oggetti in base a un campo specifico. L'interfaccia Comparator viene utilizzata per raggiungere questo obiettivo:
importare java.util.ArrayList ;importare java.util.Collections ;
importare java.util.Comparator ;
importare java.util.List ;
pubblico classe Principale {
pubblico statico vuoto principale ( Corda [ ] arg ) {
Elenco < Persona > persone = nuovo Lista di array <> ( ) ; // Assegna nome, età e stipendio
persone. aggiungere ( nuovo Persona ( 'Alice' , 25 , 50000 ) ) ;
persone. aggiungere ( nuovo Persona ( 'Bob' , 30 , 75000 ) ) ;
persone. aggiungere ( nuovo Persona ( 'Charlie' , venti , 40000 ) ) ;
Comparatore < Persona > salaryComparatore = nuovo Comparatore < Persona > ( ) {
// Ordina le persone in base allo stipendio
pubblico int confrontare ( Persona p1, Persona p2 ) {
ritorno Numero intero . confrontare ( p2. getSalary ( ) , pag.1. getSalary ( ) ) ;
}
} ;
Collezioni . ordinare ( persone, salaryComparator ) ; ritorno ordinare i valori
// Stampa un elenco ordinato di persone
per ( Persona persona : persone ) {
Sistema . fuori . println ( persona ) ;
}
}
}
classe Persona { // Definisci nome, età e stipendio
privato Corda nome ; // ambito all'interno di una classe
privato int età ;
privato int stipendio ;
pubblico Persona ( Corda nome, int età, int stipendio ) {
Questo . nome = nome ;
Questo . età = età ;
Questo . stipendio = stipendio ;
}
pubblico Corda getNome ( ) {
ritorno nome ;
}
pubblico int getAge ( ) {
ritorno età ;
}
pubblico int getSalary ( ) {
ritorno stipendio ;
}
pubblico Corda accordare ( ) {
ritorno nome + ' (età ' + età + ', stipendio $' + stipendio + ')' ;
}
}
Di seguito la descrizione del codice:
- Una classe chiamata “ Persona ” con tre campi: “ nome ”, “ età ', E ' stipendio ' è considerato.
- Successivamente, ordina una raccolta di oggetti Persona in base al loro stipendio in ordine decrescente.
Produzione
L'output mostra che gli stipendi sono stati ordinati in base all'ordine decrescente.
Conclusione
In Java, l'interfaccia Comparator è un potente strumento che consente agli utenti di ordinare gli oggetti in base a criteri personalizzati. Sovrascrive il metodo compare(), gli utenti possono definire la propria funzione di confronto e utilizzarla per ordinare raccolte di oggetti in vari modi. Questo articolo ha spiegato l'interfaccia di Comparator insieme a esempi pratici in Java.