2016-02-29 1 views
0

J'écris un programme Java.Profiter de l'ordre alphabétique dans la recherche de base de données String en Java

J'ai des milliers de listes stockées en tant que fichiers .txt. Chaque liste contient des milliers de mots, classés par ordre alphabétique. Tous les mots de chaque liste sont différents (il n'y a pas de répétitions).

Je dois rechercher ces listes, afin de voir si un mot de requête est présent dans chaque liste ou pas. Comment puis-je profiter de l'ordre alphabétique pour accélérer ma recherche? L'approche par force brute (méthode .equals()) fonctionne bien mais prend plusieurs heures.

Merci beaucoup d'avance pour votre aide! Je vous serais très reconnaissant si vous pouviez également m'envoyer quelques bribes de code.

+0

Pouvez-vous poster un exemple de ces mots? Et qu'est-ce que tu veux exactement chercher? – developer033

+0

Ajoutez chaque mot à un ['HashSet'] (https://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html) – Nayuki

+0

Des milliers de fichiers contenant des milliers de mots devraient être facilement consultables en quelques secondes avec 'grep'. Je ne m'attendrais pas à ce que Java soit vraiment plus lent. Pouvez-vous poster votre code de recherche? – dimo414

Répondre

1

Java fournit les méthodes Arrays.binarySearch(Object[] array, Object key) et Collections.binarySearch(List<? extends Comparable<? super T>> list, T key) qui amélioreront vos résultats. Ils sont la solution non optimale, mais ils sont faciles à utiliser et beaucoup mieux que la force brute.