Duvidas sobre Tabela Hash!

Ola Pessoal!

estou montando um projeto onde tenho um arquivo txt que necessito processar e transformar em uma tabela hash para agilizar nas consultas.
esse aquivo texto é grande e me falaram que vai ficar muito lento as consultas se for feito em um hashtable.

o conteudo do arquivo txt é: codigo, descrição e localização

eu queria montar um tabela hash onde na aplicação iria comparar um código digitado pelo usuario com o codigo registrado na tabela, se o codigo for verdadeiro ele pega a descrição e a localização do produto.

Alguem tem soluções melhores para me ajudar?

Origado pessoal ajudem ai por favor.

Olá

Depende das colisões da sua tabela, isto é, como você implementará sua tabela. Se ficar lento a culpa é sua. Há muita teoria sobre como implementar uma tabela hash. Mas achar uma função hash ideal aí sim pode demorar muito.

Compare com:

  • ordenar os códigos do seu arquivo e fazer busca binária

  • criar uma tabela invertida do seu arquivo para buscar por índices

  • usar egrep

etc.

[]s
Luca

Hum, acho que seu professor de estruturas de dados não lhe enfatizou direito que o acesso a tabelas de índice calculado (hash tables) é normalmente O(1), ou seja, não depende do tamanho da tabela se você tiver populado adequadamente a hash table.
Pode ficar muito lento se:

  • A função de hash for inadequada, ou
  • Você precisa de um outro acesso, sem ser pelo código.
    Digamos que você queira procurar alguma coisa por uma palavra que consta da descrição. Aí você vai ter de varrer a tabela inteira, e não há hash table que resolva sozinha seu problema.

Se você precisa de um acesso mais flexível que apenas pelo código, use um banco de dados SQL tradicional, como o HSQLDB ou o Derby (para uma solução 100% Java) ou outro banco.

Esse projeto que estou fazendo vai funcionar em um Coletor de Dados http://www.kebelc.com.br/Coletor_de_dados_Dolphin_7450.htm
que servira para conferencia de um Estoque de peças(Inventario)

eu trabalho com programação Magic(DBMS-Betrieve) e fiz um programa que pega do cadastro de produtos somente o código, descrição, localização e montei tudo em uma tabela e por padrão é tudo salvo em um arquivo nome.dat

esse nome.dat que o Magic crio sera enviado para a memoria do Coletor de Dados e é onde eu quero fazer a verificação se o codigo digitado no Coletor é igual ao codigo que tem dentro do arquivo.dat

eu não consigo vizualizar uma maneira de fazer essa verificação, ou seja fazer com que o java acesse esse arquivo na memoria do Coletor de Dados e verificar se existe o codigo que o usuario digito, se existe ele pega a descrição e a localização do produto.

por favor me ajudem mais nessa…

obrigado pela ajuda

abraços

Rapaz de acordo com uq vc descreveu acima, criei um pequeno exemplo que ler um arquivo com 65536 linhas e coloca seu conteúdo dentro de um objeto Map. Vc poderá rodar e testar pra daí ter outras ideias. Abraços.

Olá

Parabéns pela iniciativa mas é possível anexar código Java ou zip deles.

[]s
Luca

Ok Luca, obrigado pela dica. Abraços, Rulio Vangellis.

Rulio

Valeu pelos exemplos está me ajudando muito.

muito obrigado a todos que me ajudaram. :smiley: