Tabela Hash

3 respostas
K

Olá pessoa!
Estou fazendo um trabalho de faculdade. Nele eu preciso preencher um vetor de pessoas, e segundo o cpf calcular o hash e inserir em uma tabela hash. Até ai blza. Meu sistema roda e insere corretamente. Mas eu preciso tbm permitir a pesquisa do cpf na tabela hash.

public Nodo findCpf(String chave){ for(int i = 0; i<13; i++){ if(vetorCpf[i] != null){ setInicio(vetorCpf[i]); if( getInicio().chave.equals(chave)){ return getInicio(); } else{ while(getInicio().prox != null) { setInicio(getInicio().prox); if(getInicio().chave.equals(chave)){ return getInicio(); } } } } } return null; }

Debugando o codigo ele funciona. Meu problema está na exibição. Eu recebo o cpf a ser consultado assim:

if(e.getSource() == btnBCpf){ cpf = JOptionPane.showInputDialog("Entre com o cpf que deseja pesquisar:"); tabela.findCpf(cpf); JOptionPane.showMessageDialog(null, getInicio()); }

Mas a exibição na tela não está legal. O resultado na mensagem é TabelaHash.TabelaHash@f5da06.
Aguem pode me ajudar?

3 Respostas

Almeidaah

Amigo, você está tentando mostrar o endereço de um objeto na tela, por isso o problema.
Esse getInicio() te retorna um Nodo?

Se sim, crie na Classe desse getInicio() um atributo String cpf.
aí compara a chave com o getInicio.getCpf();

E aí você imprime o getInicio().getCpf() se as chaves forem iguais.
Um pouco de cuidado na manipulação deo bjetos.
Espero ter ajudado, até mais. :smiley:

Almeidaah

Wellington,
Concordo com você, só pensei caso ele quisesse algo específico para o método, mais o toString() é perfeito para o caso, obrigado pelo complemento.

WellingtonRamos

Almeidaah:
Amigo, você está tentando mostrar o endereço de um objeto na tela, por isso o problema.
Esse getInicio() te retorna um Nodo?

Se sim, crie na Classe desse getInicio() um atributo String cpf.
aí compara a chave com o getInicio.getCpf();

E aí você imprime o getInicio().getCpf() se as chaves forem iguais.
Um pouco de cuidado na manipulação deo bjetos.
Espero ter ajudado, até mais. :smiley:


Ao invés disso, eu sobrescreveria o método toString da classe Nodo (esse método é herdado de Object) que, aparentemente, é retornado por getInicio() para imprimir o CPF.

A implementação padrão de toString é equivalente a que foi apresentada. Acredito que isso resolva.

Criado 7 de maio de 2011
Ultima resposta 13 de mai. de 2011
Respostas 3
Participantes 3