Java — HashMap vs TreeMap vs LinkedHashMap
Ces trois implémentations de Map sont très utilisées en Java. Bien comprendre leurs différences est essentiel pour choisir la bonne structure.
1. Idée simple
- HashMap → rapide, pas d’ordre
- TreeMap → trié (ordre naturel ou custom)
- LinkedHashMap → garde l’ordre d’insertion
2. HashMap
Caractéristiques
- pas d’ordre garanti
- très rapide (O(1) en moyenne)
- basé sur le hash
Exemple
Map<String, Integer> map = new HashMap<>();
map.put("B", 2);
map.put("A", 1);
System.out.println(map); // ordre aléatoire
3. TreeMap
Caractéristiques
- éléments triés
- basé sur un arbre (Red-Black Tree)
- complexité : O(log n)
Exemple
Map<String, Integer> map = new TreeMap<>();
map.put("B", 2);
map.put("A", 1);
System.out.println(map); // {A=1, B=2}
4. LinkedHashMap
Caractéristiques
- garde l’ordre d’insertion
- plus prévisible que HashMap
- légèrement plus lent
Exemple
Map<String, Integer> map = new LinkedHashMap<>();
map.put("B", 2);
map.put("A", 1);
System.out.println(map); // {B=2, A=1}
5. Comparaison rapide
| Map | Ordre | Complexité | Usage principal |
|---|---|---|---|
| HashMap | ❌ aucun | O(1) | performance |
| TreeMap | ✔️ trié | O(log n) | données ordonnées |
| LinkedHashMap | ✔️ insertion | O(1) | ordre prévisible |
6. Quand utiliser ?
- HashMap → cas général, performance
- TreeMap → besoin de tri
- LinkedHashMap → conserver l’ordre
Pièges fréquents
- croire que HashMap est ordonné
- utiliser TreeMap sans besoin de tri
- oublier le coût O(log n)
7. Questions classiques
Q1
quelle Map est triée ? TreeMap
Q2
la plus rapide ? HashMap
Q3
laquelle garde l’ordre d’insertion ? LinkedHashMap
Q4
complexité de TreeMap ? O(log n)
8. À retenir
- HashMap = rapide, sans ordre
- TreeMap = trié, plus lent
- LinkedHashMap = ordre d’insertion
🧾 En résumé
- choisir la bonne Map dépend du besoin
- performance vs ordre vs tri
- chaque implémentation a un cas d’usage précis
Bien choisir sa Map impacte directement les performances et le comportement du programme.