Ho notato che Comparator è molto simile a Comparable che io ho proficuamente utilizzato più volte. In effetti Comparator richiede anche l'implementazione del metodo equals() che non è richiesta per Comparable.
Se il tuo scopo è quello di poter ordinare un array di oggetti, allora ti consiglio di implementare Comparable (ti risparmi un metodo), comunque il metodo principale è uguale (cambia solamente il nome: per Comparator si chiama compare(), mentre per Comparable si chiama compareTo()).
Quello che devi fare tu è implementare il metodo compare() in modo che restituisca un intero. Il numero intero che viene restituito deve seguire le seguenti regole:
1) Deve essere negativo se il primo oggetto è minore del secondo oggetto;
2) Deve essere uguale a 0 se i due oggetti sono uguali
3) Deve essere maggiore di 0 se il primo oggetto è maggiore del secondo oggetto;
Esempio: prendiamo questo piccolo esempio:
Vediamo, quindi, un esempio di ordinamento, con una classe che implementa Comparable:codice:String s1 = "Abcd"; String s2 = "Dcba"; compare(s1, s2) --> ritorna un numero negativo compare(s1, s1) --> ritorna 0 compare(s2, s1) --> ritorna un numero positivo
Non ho fatto delle prove ma dovrebbe andare.codice:public class MioOggetto implements Comparator { private int[] mioDato; public MioOggetto() { mioDato = new int[2]; } public int [] getDato() { return mioDato; } public int compare(Object o1, Object o2) { /* Questo metodo effettua un ordinamento sulle coppie di interi * L'ordinamento è il seguente: * (A, B) < (C, D) se e solo se (A < C) oppure ((A = C) e (B < D)) * (A, B) = (C, D) se e solo se (A = C) e (B = D) * altrimenti (A, B) > (C, D) */ MioOggetto mo1 = (MioOggetto) o1; MioOggetto mo2 = (MioOggetto) o2; int [] altroDato1 = mo1.getDato(); int [] altroDato2 = mo2.getDato(); return (altroDato1[0] == altroDato2[0]) ? altroDato1[1]-altroDato2[1] : altroDato1[0]-altroDato2[0]; } }
A questo punto, se hai un array di MioOggetto, puoi passarli ad Arrays.sort() in questo modo:
Ciao.codice:MioOggetto [] array = ...; Arrays.sort( array );![]()



