Java — Hashtable (Collection synchronisée)
Hashtable est une ancienne implémentation de Map en Java. Elle est aujourd’hui moins utilisée, mais reste importante à connaître.
1. Idée simple
Hashtable est :
- une structure clé → valeur (
Map) - thread-safe (synchronisée)
2. Exemple
Hashtable<String, Integer> table = new Hashtable<>();
table.put("A", 1);
table.put("B", 2);
System.out.println(table.get("A")); // 1
3. Caractéristiques
- ✔️ synchronisée (thread-safe)
- ❌ plus lente
- ❌ ne permet pas
null
4. Différence avec HashMap
| Feature | Hashtable | HashMap |
|---|---|---|
| thread-safe | ✔️ | ❌ |
| performance | ❌ plus lent | ✔️ rapide |
| null key/value | ❌ interdit | ✔️ autorisé |
5. Pourquoi plus lente ?
toutes les méthodes sont synchronisées :
public synchronized V put(K key, V value)
donc :
- lock global
- forte contention
6. Pièges fréquents
- penser que Hashtable est moderne
- utiliser au lieu de ConcurrentHashMap
- oublier que
nullest interdit
7. Alternative moderne
préférer :
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
avantages :
- thread-safe
- meilleure performance
- lock fin (granulaire)
8. Questions classiques
Q1
Hashtable est thread-safe ? Oui
Q2
accepte null ? Non
Q3
pourquoi peu utilisé aujourd’hui ? trop lent
9. À retenir
- Hashtable = ancienne version synchronisée
- performance faible
- remplacée par ConcurrentHashMap
🧾 En résumé
- Map thread-safe
- lock global
- pas de
null - obsolète dans la plupart des cas
Aujourd’hui, on préfère des solutions plus performantes comme ConcurrentHashMap.