pessoal fiz uma classe Cavalo onde sobrescrevo os metodos equals e hashCode. Sendo q quando rodo a classe Main4 o resultado n é o q eu espero. alguem tem ideia do q tou fznd errado?
Classe Cavalo
public class Cavalo {
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public boolean equals(Object ob){
if(ob != null && this.getClass() == ob.getClass()){
Cavalo c = (Cavalo)ob;
System.out.println(c.getNome());
return this.nome.equals(c.getNome());
}
return false;
}
public int hashCode(){
int i = this.nome.hashCode();
System.out.println(i);
return i;
}
}
Classe Main4
public class Main4 {
public Main4(){
Set<Cavalo> s = new HashSet<Cavalo>();
Cavalo c1 = new Cavalo();
c1.setNome("rouxao");
Cavalo c2 = new Cavalo();
c2.setNome("lourinho");
Cavalo c3 = new Cavalo();
c3.setNome("lourinho");
s.add(c1);
s.add(c2);
//s.add(c1);
s.add(c3);
for(Cavalo c : s){
System.out.println(c.getNome());
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Main4();
}
}
Saída
-925129266
-[telefone removido]
-[telefone removido]
lourinho
lourinho
rouxao
Pelo q sei o HashSet não adciona objetos repetidos, então o pq desse resultado?