Qual a finalidade de usar Hashtable

eu estava estudando Hashtable do package java.util

fiz um programinha de teste, onde adicionava, excluia, limpa o objeto Hashtable…

em primeiro momento, pensei que ele poderia servir pra mim como uma tabela virtual, mas fica dificil, pois ele nao separa colunas, ae eu teria que criar métodos para separar essas colunas…

li algo que fazer hash fica mais facil que array, mas nao entendi nada

alguem poderia tentar me explicar qual o uso teórico e prático dessa classe?

desculpem a pergunta meio boba…

obrigado desde ja

Andou faltando nas aulas de Estruturas de Dados, né? :slight_smile:

http://www.davidreilly.com/jcb/faq/faq0034.html

é mei dificil explicar sem fazer “desenho da memoria”
mas voce deve ter percebido que voce obrigatoriamente deve usar uma chave (key) pra inserir dados… para que serve essa key…

com essa chave, ele faz um calculo, o resultado desse calculo é uma posição da tabela do hash…

sendo assim, na hora de BUSCAR esse valor, voce da a chave novamente, e pelo calculo ele sabe exatamente a posicao da tabela que o valor se encontra! nao precisando percorrer toda a tabela atraz dele … p q dominiu o tempo de resposta…

bem resumido é isso… mas existem muito mais teoria sobre os hashtables, hashmaps e tal… procure na internet que voce acha… ou se tiver acesso ao livro Collection In Java, é uma boa fonte de infomações…

obrtigado pela respostas dos dois eu entendi porque ele é mais rapido sim…

aproveitando a pergunta.

após estudar Hashtable eu li sobre a classe Properties e vi que ela estende a Classe Hashtable, assim properties possuem mais métodos que Hashtable… entao é interessante usar o Properties ao invés de Hashtable? a velocidade continuará a mesma???

obrigado desde ja

um hashtable bem escrito leva tempo constante (em relacao ao tamanho da sua tabela) para buscar qquer chave. mas normalemente a busca nao eh direta nao, ela bate em um ou dois lugarzinhos.

o pessoal ja respondeu ai para voce para que serve o hashtable. mas de uma olhada no tutorial do guj sobre Properties, ja que ela eh um hashtable. La tem uma boa explicacao do que eh um Mapa (hashtable eh um mapa tambem).

Oi Pessoal!!

eu estou estudando java mas, ainda não sei muito desta linguagem… e Hashtables são a dor de cabeça…

O problema que me atormenta é o seguinte:

tenho de criar uma Hashtable de “armários” sendo que cada “armário”
contem um nº indeterminado de Hashtables de “gavetas” e cada “gaveta” comtem uma lista (linkedList) de objetos (disquetes, CD’s, DVD’s,…), cada “armário” e “gaveta” tem um nome unico garantido externamente ao programa, desta forma os nomes serão usados como chaves…

como vou ter adicionar novas “gavetas” a “armários” já existentes e
adicionar ou retirar objetos às “gavetas”.

estou pedindo a vossa ajuda para a criação das Classes “Armario”
e “Gaveta” e tbm, como manipular (inserir e remover) os dados… não
sei quase nada de java e preciso mesmo concluir este trabalho…

desde já agradeço a vossa colaboração…

Atentamente
Jorge.

um “hashtable bem escrito” no caso do Java é uma hashtable que guarda objetos que sobrescrevem de maneira adequada o método public int hashCode() de Object?

Não é necessário ter um hashCode sobrescrito pra que ele funcione bem :wink:

Não é necessário ter um hashCode sobrescrito pra que ele funcione bem ;)[/quote]

Isto porque o hashCode original de Object (aquele que retorna o endereço de memória do objeto) já é eficiente?

Em muitos casos, sim :slight_smile: