Je dois lire des mots à partir d'un fichier 10G et les mettre de manière triée de leur fréquence, comment puis-je y parvenir de la manière la plus efficace?Comment puis-je lire efficacement les mots d'un fichier 10 G et les mettre dans l'ordre de leur fréquence?
Répondre
Utilisez une base de données.
Sinon, vous finirez par créer un sous-ensemble d'une base de données.
Créez un Hash qui mappera Word -> # d'occurrences. Puis le peupler. Après que convertir en tableau et trier.
Je peux utiliser TreeMap pour garder un compte sur le mot, que diriez-vous de lire le fichier? – Vishal
@Vishal TreeMap n'est peut-être pas la meilleure option. "La carte est triée en fonction de l'ordre naturel de ses clés" (http://download.oracle.com/javase/6/docs/api/java/util/TreeMap.html) dans l'ordre de vos clés (mots) n'est pas pertinent. l'ordre des valeurs est important, mais il n'est pas stable car il évolue avec le temps. – Andrey
@Vishal vous lisez le fichier char par char, quand vous voyez la fin du travail (espace ou signe de ponctuation) vous considérez que le mot est fini, convertissez-le en majuscule/minuscule et incrémentez la fréquence (dépend de l'algorithme choisi) – Andrey
Je voudrais utiliser a Trie
êtes-vous sérieux? C'est une question complètement algorithmique qui peut être résolue en utilisant le code et la mémoire, pourquoi utiliser la base de données? – Andrey
@Andrey: Parce que (1) les bases de données sont conçues pour faire ce genre de chose (10G n'est pas une grande base de données), (2) si c'est 10G de mots uniques, gérer un hachage de milliards d'entrées ne doit pas être résolu (c'est-à-dire en construisant un fichier disque indexé d'un type appelé base de données). – Richard
de (1) il est nécessaire de conclure que vous devriez l'utiliser. en passant 10 Go sur le réseau prendra beaucoup de temps et d'autres utilisateurs sur le réseau ne l'apprécieront pas. (2) qui a dit unique? Si c'est l'anglais, alors il y a maximum de 1M mots (http://hypertextbook.com/facts/2001/JohnnyLing.shtml) pas de montant sérieux pour le hachage. Pour moi, la tâche semble aussi facile que cela puisse paraître, mais votre solution est trop complexe pour cela. – Andrey