Hai perfettamente ragione. Mi sono scordato di implementare il metodo equals() e ciò susciterà senza dubbio delle sonore proteste da parte del compilatore. La definizione del metodo equals(), comunque, è molto più sempilce del previsto:Originariamente inviato da maurizio2
ok Comparable e il suo utilizzo l'ho ben compreso,
quindi posso dedurre che Comparator serve a
generalizzare il cocetto di confronto tra due
oggetti(minore o maggiore o uguale).
Comparable e' un interfaccia che definisce un
unico metodo (compareTo()).
Mentre in Comparator i metodi sono due:
boolean equals();//se due oggetti sono uguali
int compare();//confronto di tipo alfabetico
Ma essendo Comparator un'interfaccia
non deve la classe che lo implementa
ridefinire entrambi i metodi??
Quindi il tuo esempio dovrebbe suscitare
una protesta da parte del compilatore.
Cmq non ho provato ancora quindi cio' che
ho detto e' del tutto opinabile.
:master:
Credo che si potesse anche ricorrere al metodo equals() di Object, ma non ne sono proprio sicuro (basta provare):codice:public class MioOggetto implements Comparator { ... public boolean equals(Object o) { boolean risultato = false; if ( o instanceof MioOggetto) { MioOggetto mo = (MioOggetto) o; int [] dato = mo.getDato(); risultato = (dato[0] == mioDato[0]) && (dato[1] == mioDato[1]); } return risultato; } }
Ciao.codice:public boolean equals(Object o) { return super.equals(o); }![]()