Mise en œuvre d'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 mettre en place une solution ayant une complexité temporelle optimale pour la recherche des mots.
Cette activité fait partie du cours
Optimiser le code en Java
Instructions de l’exercice
- Récupérez
currentCountpour le mot lorsqu'il est déjà dans la carte de fréquences. - Incrémentez-le et mettez à jour la carte de fréquences avec la valeur mise à jour.
- Si le mot n'était pas encore dans la carte de fréquences, ajoutez-le.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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;
}
}