Maîtriser Java LinkedHashMap : Création, Opérations et Comparaison de Performance
Maîtriser Java LinkedHashMap : Création, Opérations et Comparaison de Performance
Découvrez comment créer, manipuler et comparer Java LinkedHashMap avec des exemples réels et bonnes pratiques.
La classe LinkedHashMap du framework de collections Java combine les recherches rapides d'une table de hachage avec un ordre d'itération prévisible, grâce à une liste doublement chaînée interne qui préserve l'ordre d'insertion ou d'accès.
Création d'un LinkedHashMap
Pour utiliser un LinkedHashMap, importez java.util.LinkedHashMap et instanciez-le. Le constructeur accepte la capacité initiale, le facteur de charge et un drapeau optionnel accessOrder.
// LinkedHashMap avec capacité initiale 8 et facteur de charge 0.6
LinkedHashMap<Key, Value> numbers = new LinkedHashMap<>(8, 0.6f);
Paramètres :
- capacity – le nombre de buckets ; défaut 16.
- loadFactor – déclenche le redimensionnement quand la table est à 60% pleine ; défaut 0.75.
- accessOrder –
falsepour l'ordre d'insertion,truepour l'ordre d'accès (du moins récent au plus récent).
Exemple avec paramètres par défaut :
LinkedHashMap<Key, Value> defaultMap = new LinkedHashMap<>();
Création d'un LinkedHashMap depuis une Map Existante
Copiez une map existante dans un LinkedHashMap pour préserver l'ordre :
LinkedHashMap<String, Integer> evenNumbers = new LinkedHashMap<>();
evenNumbers.put("Two", 2);
evenNumbers.put("Four", 4);
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>(evenNumbers);
numbers.put("Three", 3);
Sortie :
LinkedHashMap1: {Two=2, Four=4}
LinkedHashMap2: {Two=2, Four=4, Three=3}
Opérations Clés
Insérer des Éléments
put(key, value)– ajoute ou remplace un mapping.putIfAbsent(key, value)– ajoute seulement si la clé est manquante.putAll(map)– fusionne une autre map.
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
numbers.put("One", 1);
numbers.putIfAbsent("Two", 2);
numbers.putAll(evenNumbers);
Accéder aux Éléments
Récupérez les clés, valeurs ou entrées :
entrySet()– toutes les paires clé/valeur.keySet()– toutes les clés.values()– toutes les valeurs.get(key)– valeur ounullsi manquante.getOrDefault(key, default)– récupération sûre avec une valeur par défaut.
int val = numbers.get("Three");
int def = numbers.getOrDefault("Five", 5);
Supprimer des Éléments
remove(key)– supprime par clé.remove(key, value)– supprime seulement si la valeur correspond.clear()– efface la map.containsKey(key)– vérification d'existence.containsValue(value)– vérification d'existence.size()– nombre d'entrées.isEmpty()– vérification de vacuité.
LinkedHashMap vs HashMap
- LinkedHashMap préserve l'ordre d'insertion ou d'accès ; HashMap ne le fait pas.
- LinkedHashMap utilise de la mémoire supplémentaire pour les liens de nœuds.
- L'itération de LinkedHashMap est légèrement plus lente mais offre un ordre prévisible.
Java
- Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
- Commentaires Java : Types, utilisation et bonnes pratiques
- Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
- Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
- Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
- Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
- Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
- Annotations Java expliquées : types, placement et exemples pratiques
- Assertions Java : guide pratique pour détecter les bugs et assurer la fiabilité du code