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
Instructions
- Récupérez
currentCountpour 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;
}
}