[quote=Felagund][quote=sergiotaborda]
Já agora , nunca , nunca, nunca, (…) , nunca , nunca façam um if/else que retorna boleano
Isto
public boolean equals(Aluno a)
{
if (getNome().equals(a.getNome()) && getTurno().equals(a.getTurno()) //....
{
return true;
}
else
{
return false;
}
}
Se substitui por :
public boolean equals(Aluno a)
{
return getNome().equals(a.getNome()) && getTurno().equals(a.getTurno()) //....
}
[/quote]
Vejo algum null pointer a caminho em qualquer uma dessa condições :)[/quote]
No caso de um bean como este sim vc precisa de verificação de null.
Mas esse não era o ponto … o ponto era o estilo de programação aprendiz de feiticeiro do primeiro codigo 
ops copiar e colar eh uma desgraça… já arrumei as coisas gritantes que estavam ai ^^’
muito obrigado =D
Valeu ViniGodoy, vou dar uma olhada!
Tudo o que vc falou eu já tinha aprendido, mas é complicado lembrar… Espero que o renato_ramos esteja se achando no meio desse tópico =P
sergiotaborda… Aprendiz de feiticeiro?
Foi só uma programação leviana. Rs…
[quote=Marcos Lima]Puts, ViniGodoy, vc está me destruindo…
Acho que vou ler um livro, hahaha…[/quote]
Nada pessoal, entretanto. heheheehh
Eu é que sou chato mesmo. Principalmente no Java Básico.
[quote=Marcos Lima]Valeu ViniGodoy, vou dar uma olhada!
Tudo o que vc falou eu já tinha aprendido, mas é complicado lembrar… Espero que o renato_ramos esteja se achando no meio desse tópico =P[/quote]
sim sim me achei agora está assim e funcinou, só adiciono um objeto só
public class Aluno implements Comparable{
private String nome, turno, semestre;
private int matricula;
public Aluno() {
setNome("");
setTurno("");
setSemestre("");
setMatricula(0);
}
//gets e sets.
@Override
public boolean equals(Object obj)
{
Aluno a = (Aluno)obj;
return (!(obj == null)) &&
getNome().equals(a.getNome()) &&
getSemestre().equals(a.getSemestre()) &&
getTurno().equals(a.getTurno());
}
@Override
public String toString(){
String string = "Nome : " + getNome() +
"Turno: " + getTurno() +
"Semestre: " + getSemestre() +
"Matricula: " + getMatricula();
return string;
}
@Override
public int compareTo(Object o) {
Aluno outroAluno = (Aluno) o;
if(outroAluno.getMatricula() > this.matricula)
return 1;
else if(outroAluno.getMatricula() == this.matricula)
return 0;
else
return -1;
}
@Override
public int hashCode() {
int hash = 5;
hash = 97 * hash + (this.nome != null ? this.nome.hashCode() : 0);
hash = 97 * hash + (this.turno != null ? this.turno.hashCode() : 0);
hash = 97 * hash + (this.semestre != null ? this.semestre.hashCode() : 0);
hash = 97 * hash + this.matricula;
return hash;
}
}
[quote=renato_ramos]minha classe inteira
[/quote]
Tem mais um problema ai. O equals deve testar se a classe passada é compativel
@Override
public boolean equals(Object obj)
{
if( !( obj instanceof Aluno)l){
return false;
}
Aluno a = (Aluno)obj;
return (!(obj == null)) &&
getNome().equals(a.getNome()) &&
getSemestre().equals(a.getSemestre()) &&
getTurno().equals(a.getTurno());
}
}
O instanceof retorna falso se o objeto não for da classe. Se for null, ele obviamente não é da classe.
Sem esta verificação não é licito fazer o cast mais em baixo podendo levar um ClassCastException e essa exceção não é primitida para o método equals (ver no javadoc).
Valeu sergio!
agora surgiu outra questao lol
colocando somente a matricula no hash… agora está adicionando dois objetos com proriedades diferentes no hashset \o/
aaa negocio complicado !!
vo batalhando contra essa coisa aki xD
muito obrigado pela atenção messmo!
desculpem o double post.
mas acho que entendi me acertem se estiver errado xD
na hora de adicionar no hashset é executado o hashCode do objeto se for igual … ele verifica se é igual mesmo com o equals()
por isso os dois tem que ser implementados com os mesmos paremetros.
tah certo??
obrigaddoo!!