boas!
eu preciso de comparar uma lista de palavras que eu tenho, a maioria das quais nao e uma palavra mas ha umas poucas que sao, com uma lista de palavras da língua portuguesa, ou seja, da minha lista de palavras eu preciso de encontrar quais as que realmente fazem sentido. Qual e a melhor maneira de fazer isto?
obrigado
Crie um hashSet com as palavras da lingua portuguesa. Use o método contains do hashSet para testar se a palavra da sua lista de palavras está ou não nesse set.
O método contains de um HashSet é praticamente instantâneo.
A opção b) seria criar um array ordenado de palavras do português. E usar sobre ele busca binária (pode ser com o método Arrays.binarySearch, ou com o algorítmo de busca binária, se é isso que seu professor está ensinando).
o meu problema era arranjar essa lista de palavras porque eu nao posso criar assim de repente um ficheiro com essas palavras todas. existe algum ficheiro/lista/biblioteca (nao sei como lhe chamar ) que se possa “trazer” para o meu programa de modo a eu comparar as tais palavras?
Que eu saiba não. Você pode tentar entrar em contato com alguns lexicógrafos que tenham dicionários em seu país (como a Priberam ou a acadêmica lusitana de letras) e ver se eles podem disponibilizar esse tipo de arquivo para você.
http://alcor.concordia.ca/~vjorge/Palavras-Cruzadas/Lista-de-Palavras.txt
Trazer 65.000 palavras para um HashSet não iria sobrecarregar a memória principal? Não seria melhor deixar a lista num TXT e usar métodos de ordenação externa?
Que tipo de ordenação externa você está falando?
Depende de quanta memória principal você tenha, e do tamanho da tal lista de palavras… Mas com certeza o array de floats irá consumir bem menos memória.
Se a memória principal é curta, você poderia dividir em vários arquivos txt, um para cada letra do alfabeto (ou até 2 para as letras A e E, que são muito numerosas). E só carregar o arquivo apropriado. Isso reduz consideravelmente a velocidade do algorítmo se vc estiver processando uma lista muito grande de palavras, mas consome muito menos memória. A estratégia é mais adequada se vc estiver fazendo uma busca.
O grande dicionário Aurélio tem uma lista de mais de 140.000 verbetes, talvez um pouco menos se excluirmos os estrangeirismos.
Por exemplo, Replacement Selection. Mas, concordo com suas colocações.