Java - Interface Map

Bienvenue, futurs développeurs Java ! Aujourd'hui, nous plongeons dans un des composants les plus polyvalents et puissants du framework Collections de Java : l'interface Map. En tant que votre enseignant de science informatique de quartier, je suis excité de vous guider dans cette aventure. Alors, prenez votre boisson favorite, asseyez-vous confortablement, et embarquons dans cette aventure ensemble !

Java - Map Interface

Qu'est-ce qu'une Map ?

Imaginez que vous organisez une bibliothèque immense. Vous voulez trouver rapidement des livres sans avoir à chercher sur chaque étagère. C'est là que la Map devient utile dans le monde de la programmation. Une Map est comme un bibliothécaire magique qui peut localiser instantanément n'importe quel livre que vous lui demandez.

En Java, une Map est un objet qui stocke des paires de clé-valeur. Chaque clé est associée à une valeur spécifique, tout comme un titre de livre (clé) est associé à son emplacement dans la bibliothèque (valeur).

Caractéristiques clés de Map

  1. Chaque clé doit être unique
  2. Chaque clé peut mapper au maximum une valeur
  3. Parfait pour les recherches rapides et la récupération des données

Méthodes de l'Interface Map

Jetons un coup d'œil à quelques-unes des méthodes les plus couramment utilisées dans l'interface Map :

Méthode Description
put(K key, V value) Ajoute une paire clé-valeur à la map
get(Object key) Retourne la valeur associée à la clé spécifiée
remove(Object key) Supprime la paire clé-valeur associée à la clé spécifiée
clear() Supprime toutes les paires clé-valeur de la map
size() Retourne le nombre de paires clé-valeur dans la map
isEmpty() Retourne true si la map ne contient aucune paire clé-valeur
containsKey(Object key) Retourne true si la map contient la clé spécifiée
containsValue(Object value) Retourne true si la map contient la valeur spécifiée
keySet() Retourne un Set de toutes les clés de la map
values() Retourne une Collection de toutes les valeurs de la map
entrySet() Retourne un Set de toutes les paires clé-valeur de la map

Classes qui implémentent Map

Java fournit plusieurs classes qui implémentent l'interface Map. Jetons un coup d'œil aux trois plus couramment utilisées :

1. HashMap

HashMap est comme un bibliothécaire rapide qui peut trouver n'importe quel livre en un clin d'œil mais ne se soucie pas de l'ordre des livres.

Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 25);
ages.put("Bob", 30);
ages.put("Charlie", 35);

System.out.println(ages.get("Bob")); // Output: 30

Dans cet exemple, nous créons une HashMap pour stocker les âges des personnes. La clé est le nom de la personne (une chaîne de caractères), et la valeur est leur âge (un Integer).

2. TreeMap

TreeMap est comme un bibliothécaire qui garde tous les livres triés alphabétiquement par leurs titres.

Map<String, String> capitals = new TreeMap<>();
capitals.put("USA", "Washington D.C.");
capitals.put("France", "Paris");
capitals.put("Japan", "Tokyo");

for (String country : capitals.keySet()) {
System.out.println(country + ": " + capitals.get(country));
}

Ce code affichera les pays et leurs capitales dans l'ordre alphabétique des noms des pays :

France: Paris
Japan: Tokyo
USA: Washington D.C.

3. LinkedHashMap

LinkedHashMap est comme un bibliothécaire qui se souvient de l'ordre dans lequel les livres ont été ajoutés à la bibliothèque.

Map<String, Double> prices = new LinkedHashMap<>();
prices.put("Apple", 0.99);
prices.put("Banana", 0.59);
prices.put("Cherry", 3.99);

for (Map.Entry<String, Double> entry : prices.entrySet()) {
System.out.println(entry.getKey() + ": $" + entry.getValue());
}

Cela affichera les fruits et leurs prix dans l'ordre dans lequel ils ont été ajoutés :

Apple: $0.99
Banana: $0.59
Cherry: $3.99

Interfaces qui étendent Map

L'interface Map a deux sous-interfaces principales :

  1. SortedMap
  2. NavigableMap

Ces interfaces ajoutent des fonctionnalités supplémentaires pour travailler avec des maps triées. TreeMap implémente les deux de ces interfaces.

Exemples de l'Interface Map

Jetons un coup d'œil à quelques exemples pratiques pour solidifier notre compréhension :

Exemple 1 : Suivi des notes des étudiants

Imaginez que nous construisons un système pour suivre les notes des étudiants :

Map<String, Integer> studentGrades = new HashMap<>();

// Ajout des notes des étudiants
studentGrades.put("Alice", 95);
studentGrades.put("Bob", 80);
studentGrades.put("Charlie", 85);

// Mise à jour d'une note
studentGrades.put("Bob", 82);

// Récupération d'une note
System.out.println("La note d'Alice : " + studentGrades.get("Alice"));

// Vérification si un étudiant existe
if (studentGrades.containsKey("David")) {
System.out.println("La note de David : " + studentGrades.get("David"));
} else {
System.out.println("David n'est pas dans le système.");
}

// Affichage de toutes les notes des étudiants
for (Map.Entry<String, Integer> entry : studentGrades.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}

Cet exemple demonstrates l'ajout, la mise à jour, la récupération et l'itération sur les entrées dans une Map.

Exemple 2 : Compteur de fréquence des mots

Créons un programme qui compte la fréquence des mots dans une phrase :

String sentence = "the quick brown fox jumps over the lazy dog";
String[] words = sentence.split(" ");

Map<String, Integer> wordFrequency = new HashMap<>();

for (String word : words) {
if (wordFrequency.containsKey(word)) {
wordFrequency.put(word, wordFrequency.get(word) + 1);
} else {
wordFrequency.put(word, 1);
}
}

for (Map.Entry<String, Integer> entry : wordFrequency.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}

Ce programme.split la phrase en mots, puis compte combien de fois chaque mot apparaît, stockant les résultats dans une Map.

Conclusion

Félicitations ! Vous avez刚刚 pris vos premiers pas dans le monde de l'interface Map de Java. Nous avons couvert les bases, exploré différentes implémentations, et même abordé quelques exemples pratiques. Souvenez-vous, comme tout bon bibliothécaire, une Map vous aide à organiser et à récupérer des informations efficacement.

Alors que vous continuez votre parcours en Java, vous trouverez des Maps apparaissant partout, des programmes simples aux applications complexes. Elles sont un outil essentiel dans l'arsenal de tout développeur Java.

Continuez à pratica

Credits: Image by storyset