Originariamente inviato da Markus85
Potresti farmi un esempio di codice su come impostare il comparatore?
Ipotizza di dover confrontare persone.
Quindi hai una classe Persona, ad esempio:
codice:
public class Persona{
private String nome;
private int eta;
public Persona(String nome, int eta){
this.nome = nome;
this.eta = eta;
}
public String getNome(){
return nome;
}
public int getEta(){
return eta;
}
}
Adesso, definisco un comparatore di persone, implementando l'interfaccia java.util.Comparator, volendoli confrontare in base all'età ed al nome, stabilendo come chiave primaria di confronto l'età:
codice:
public class PersoneComparator implements Comparator<Persona>{
public PersoneComparator(){
}
public int compare(Persona o1, Persona o2){
if( o1.getEta() - o2.getEta() != 0 ){
if( o1.getEta() > o2.getEta() )
return 1;
else return -1;
} else if ( o1.getNome().compareTo(o2.getNome()) != 0) {
if( o1.getNome().compareTo(o2.getNome()) > 0 )
return 1;
else return -1;
}
return 0;
}
public boolean equals(Object obj){
return this.equals(obj);
}
}
Spero ti sia più chiaro adesso.