Ajuda com Tabela Hash

Ae blz?

To fazendo uma aplicação básica aqui que usa tabela hash(tenho pouca experiencna usando Hashtable). Ele cria um objeto da classe Cadastro com nome e nota e adicona na tabela Hash. Ai depois, por uma nota passada, é pesquisado e mostrado na tela os objetos da tabela q possuem nota igual ou superior à informada. A parte de adionar na tabela parece estar funcionando, pois usei o metodo size para testar, e retornou blz quantidade q tinha adiconado, porem qnd tento faze a parte de pesquisar pela nota o programa trava. Alguém tenha idea do que pode esta ocasionando o travamento.

[code] private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
//Insere o cadastro de um aluno na tabela Hash de acordo com os dados passados no formulário e insere os dados no list1.
String nome = jTextField1.getText();
double nota = Double.valueOf(jTextField2.getText()).doubleValue();

    Cadastro aluno = new Cadastro (nome,nota);
    
    tab.put(aluno.getNota(),aluno);
    list1.add("Aluno:" + " " + aluno.getNome() + " - " + "Nota:" + " " +  aluno.getNota());
}   

====================================================

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
//Percorre a tabela hash a procura de alunos com nota igual ou superior à informada no formulário e lista-os no list2.

    double media = Double.valueOf(jTextField2.getText()).doubleValue(); 
    Enumeration e = tab.elements();
    Cadastro aluno = new Cadastro("",0);
    
    while (e.hasMoreElements());
    {
        aluno = ((Cadastro)e.nextElement());
        if (aluno.hashCode() >= media)
        {
            list2.add("Aluno:" + " " + aluno.getNome() + " - " + "Nota:" + " " +  aluno.getNota());
        }
    }  
}  [/code]

Você implementou o método hashCode da sua classe Cadastro?

Porque você está fazendo isso?

aluno.hashCode() >= media

hashCode retorna o código de hash e não o conteúdo do elemento.

Falow!

Na verdade é aluno.getNota() >= media, eu mudei pra esse jeito para testar, mas continuou travanado.

Como assim implementou o método hashCode da sua classe Cadastro? Como falei, num tenho muita expirencia com Hashtable. :smiley:

Bem tentando ajudar, se vc fizer isto, como disse:

aluno.getNome() &gt= media

nunca vai dar certo, pois vc esta tentantado comparar uma String com um tipo numérico… Se for realmente isto seu código nem irá compilar.
Talvez seja, apenas um exemplo, algo do tipo:

aluno.getNota() &gt= media;

Na verdade é getNota mesmo, digitei errado na hora de postar … :smiley:

obs.: na hora de compilar num da nenhum erro de exceção nem nada… Ja mexi de tudo q é jeito e sempre trava… :cry: :smiley:

Analisando melhor seu código tem algumas coisas que não fazem sentido.
tab - que tipo de map vc está usando. Por que vc usa a nota como chave, parece-me uma má escolha, imagine o que acontecerá se dois alunos tiverem a mesma nota, um mapa não pode duas chaves iguais.
Existem outras coisas que ainda podemos melhorar, mas primeiro cheque esta informação…

[quote=dwduncan]Analisando melhor seu código tem algumas coisas que não fazem sentido.
tab - que tipo de map vc está usando. Por que vc usa a nota como chave, parece-me uma má escolha, imagine o que acontecerá se dois alunos tiverem a mesma nota, um mapa não pode duas chaves iguais.
Existem outras coisas que ainda podemos melhorar, mas primeiro cheque esta informação…[/quote]

Como assim map eu to usando? (como falei num manjo muito de hashtable)

Realmente bem pensado, é melhor nao usar uma nota. Vou usar uma key independete, para nu ter esse problemas de notas iguais.

Problema resolvido, uaehuae era um ponto e virgula q botei sem querer depois do While, so isso ueahuaheua, e compilo e tudo. Tudo por causa de um ponto e virgula hehee

Valeu ai.