Java:
Utilisation des tableaux associatifs
Comment :
Java n’a pas de tableaux associatifs intégrés comme certains langages, mais il fournit l’interface Map
et des classes comme HashMap
et TreeMap
pour remplir ce rôle. Voici comment utiliser un HashMap
:
import java.util.HashMap;
import java.util.Map;
public class LearnMaps {
public static void main(String[] args) {
// Création d'un HashMap
Map<String, Integer> ageOfFriends = new HashMap<>();
// Ajout d'éléments
ageOfFriends.put("Alice", 24);
ageOfFriends.put("Bob", 30);
ageOfFriends.put("Charlie", 28);
// Accès aux éléments
System.out.println("Âge d'Alice : " + ageOfFriends.get("Alice"));
// Gestion des clés inexistantes
System.out.println("Âge de quelqu'un non présent dans le map : " + ageOfFriends.getOrDefault("Dan", -1));
// Itération sur les éléments
for (Map.Entry<String, Integer> entry : ageOfFriends.entrySet()) {
System.out.println(entry.getKey() + " a " + entry.getValue() + " ans.");
}
}
}
Exemple de sortie :
Âge d'Alice : 24
Âge de quelqu'un non présent dans le map : -1
Alice a 24 ans.
Bob a 30 ans.
Charlie a 28 ans.
HashMap
est seulement une implémentation. Si vos clés sont uniques et que vous avez besoin qu’elles soient triées, considérez TreeMap
. Pour une map qui retient l’ordre d’insertion, LinkedHashMap
est votre ami.
Plongée profonde
Les maps en Java font partie du Framework de Collections, introduit dans JDK 1.2, mais ont vu des améliorations significatives au fil des années, y compris l’introduction de la méthode forEach
dans Java 8 pour une itération plus facile sur les entrées. Le choix de l’implémentation de map (HashMap
, LinkedHashMap
, TreeMap
) devrait être dicté par vos besoins spécifiques en termes d’ordonnancement et de performance. Par exemple, HashMap
offre une performance de temps O(1) pour les opérations de base (get et put), en supposant que la fonction de hachage disperse correctement les éléments parmi les seaux. Cependant, si vous avez besoin d’un tri basé sur l’ordre naturel ou des comparateurs personnalisés, TreeMap
est à privilégier, offrant un temps O(log n) pour l’insertion et la recherche.
Avant l’introduction de Map
, les tableaux associatifs étaient généralement implémentés avec deux tableaux parallèles (un pour les clés, un pour les valeurs) ou des structures de données personnalisées avec moins d’efficacité. Les alternatives actuelles à Map
et ses implémentations pourraient inclure des bibliothèques tierces offrant des maps spécialisées, telles que les maps bidirectionnelles (BiMap dans la bibliothèque Guava de Google) pour les cas où vous avez besoin de trouver une clé par sa valeur efficacement. Cependant, pour la plupart des cas d’utilisation en Java, les maps de la bibliothèque standard sont assez robustes et flexibles pour gérer la tâche.