Compter les nombres d'occurrences des mots d'un texte                        

Compter les nombres d'occurrences des mots d'un texte

           

Nous allons lister les différents mots d'un fichier en comptant pour chaque mot son nombre d'occurrences. Les mots ne seront pas triés par ordre.

Nous utilisons pour cela une table de hachage. Le paquetage java.util contient la classe Hashtable qui simplifie le travail.

Une table de hachage sert à associer des objets à d'autres objets ; ces derniers servent de clé, ce qui signifie essentiellement qu'ils doivent être tous distincts ; nous les appellerons donc les clés ; on retrouvera un objet et la clé associée en donnant la valeur de la clé ; en Java, tous ces objets, clés ou accédés par les clés, doivent être de la classe Object ou d'une sous-classe de la classe Object. L'organisation interne d'une telle structure fait que les objets sont retrouvés avec une grande rapidité. Pour qu'une table de hachage puisse fonctionner, il faut que la classe des clés redéfinisse les méthodes hashCode et equals de la classe java.lang.Object. Dans notre programme, les clés seront de la classe String et cette classe redéfinit les méthodes hashCode et equals.

On utilisera les méthodes de Hashtable suivantes :

Les clés seront les mots du texte ; l'objet rangé selon une clé (un mot) sera une instance de Integer donnant le nombre d'occurrences du mot correspondant.

Il s'agit de compléter le code de la classe CompterMots.

Pour exécuter le programme, il faut indiquer sur la ligne de commande le nom d'un fichier contenant du texte.

Voilà une exécution du programme donné en corrigé lorsqu'il est exécuté sur un petit fichier :

Le mot définit figure 1 fois
Le mot un figure 1 fois
Le mot chaîne figure 2 fois
Le mot de figure 2 fois
Le mot deux figure 1 fois
Le mot entier figure 1 fois
Le mot classe figure 2 fois
Le mot caractères figure 2 fois
Le mot comportant figure 1 fois
Le mot Combien figure 1 fois
Le mot une figure 4 fois
Le mot On figure 1 fois
Le mot champs figure 1 fois

Corrigé de CompterMots.java