2012-11-04 5 views
0

J'écris une implémentation d'un indexeur de mots pour un fichier HTML. Je traverse un problème avec le constructeur.Implémentation d'un indexeur de mots HTML

Dans le constructeur, je parcours chaque mot du fichier HTML et l'ajoute à un TreeMap), où la liste chaînée est la collection d'index où la clé, le mot, apparaît dans le fichier. Pendant le test, la liste chaînée ne devient jamais plus grande qu'une. Je me demande si quelqu'un pourrait regarder mon code et me diriger dans la bonne direction pour que les choses se mélangent.

while(scanner.hasNext()) { 
      String temp = scanner.next().toLowerCase(); 

      if(this.wordMap.containsKey(temp)) { 
       LinkedList<Integer> tempList = this.wordMap.get(temp); 
       tempList.add(currentIndex); 

       wordMap.put(temp, tempList); 

       wordCount++; 
       currentIndex++; 
      } 
      else { 
       LinkedList<Integer> tempList = new LinkedList<Integer>(); 
       tempList.add(currentIndex); 
       wordMap.put(temp, tempList); 

       wordCount++; 
       currentIndex++; 
      } 
     } 
+0

Qu'est-ce que vous avez dans le 'wordMap' à la fin? –

+0

Il n'y a pas besoin de 'wordMap.put (temp, tempList)' dans le bloc if –

+0

Dans le bloc if, je mets à jour la liste chaînée avec l'index suivant dans la section. Je le fais en faisant tempList, le définissant égal à la liste actuelle des indices du mot, puis en le mettant à jour avec l'index actuel, et en mettant à jour la liste avec la méthode put (Si la clé existe déjà dans l'arbre, la méthode put met à jour la valeur). – user1547050

Répondre

0

Ce n'est pas une réponse, Do not Repeat Yourself (DRY) dans le code:

while(scanner.hasNext()) { 
     String temp = scanner.next().toLowerCase(); 

     LinkedList<Integer> tempList; 
     if(this.wordMap.containsKey(temp)) { 
      tempList = this.wordMap.get(temp); 
     } else { 
      tempList = new LinkedList<Integer>(); 
     } 

     tempList.add(currentIndex); 
     wordMap.put(temp, tempList); 
     wordCount++; 
     currentIndex++; 
    } 

Je ne peux pas trouver bug dans le code. Je suggère de vérifier le délimiteur dans Scanner.