CommencerCommencer gratuitement

Implémenter une application d’analyse de texte

Vous développez une application d’analyse de texte qui doit compter la fréquence des mots dans un document. Vous devez implémenter une solution avec une complexité temporelle optimale pour les recherches de mots.

Cet exercice fait partie du cours

Optimiser son code en Java

Afficher le cours

Instructions

  • Récupérez currentCount pour le mot lorsqu’il est déjà présent dans la table de fréquences.
  • Incrémentez-le et mettez à jour la table de fréquences avec cette valeur mise à jour.
  • Si le mot n’était pas encore dans la table de fréquences, ajoutez-le.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

public class Main {
    public static void main(String[] args) {
        TextAnalyzer analyzer = new TextAnalyzer();
        
        List words = Arrays.asList(
            "Java", "is", "a", "programming", "language", 
            "Java", "is", "widely", "used", "for", "building", "applications",
            "Many", "programmers", "use", "Java", "for", "web", "development", "and", "Android", "apps"
        );
        
        Map wordFrequency = analyzer.buildWordFrequencyMap(words);
        
        System.out.println("Word frequency analysis:");
        for (Map.Entry entry : wordFrequency.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue() + " occurrences");
        }
    }
}

class TextAnalyzer {
    public Map buildWordFrequencyMap(List words) {
        Map frequencyMap = new HashMap();
        
        for (String word : words) {
            if (word.isEmpty()) {
                continue;
            }
            
            word = word.toLowerCase();
            
            if (frequencyMap.containsKey(word)) {
                // Retrieve the frequency of the word
                int currentCount = ____.get(____);
                // Increment the frequency of the word
                frequencyMap.put(____, currentCount + 1);
            } else {
                // If the frequency map does not have the word, add it.
                ____.____(word, 1);
            }
        }
        
        return frequencyMap;
    }
}
Modifier et exécuter le code