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.
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
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.
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.
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.