Aller au contenu

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 null est 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.


Voir aussi