Java - La classe Hashtable
Hashtable faisait partie du java.util original et est une implémentation concrète d'un dictionnaire.
Cependant, Java 2 a repensé Hashtable afin qu'il implémente également l'interface Map. Ainsi, Hashtable est désormais intégré dans le framework des collections. Il est similaire à HashMap, mais est synchronisé.
Comme HashMap, Hashtable stocke les paires clé / valeur dans une table de hachage. Lorsque vous utilisez une table de hachage, vous spécifiez un objet utilisé comme clé et la valeur que vous souhaitez lier à cette clé. La clé est ensuite hachée et le code de hachage résultant est utilisé comme index auquel la valeur est stockée dans la table.
Voici la liste des constructeurs fournis par la classe HashTable.
Sr.Non | Constructeur et description |
---|---|
1 | Hashtable( ) Il s'agit du constructeur par défaut de la table de hachage, il instancie la classe Hashtable. |
2 | Hashtable(int size) Ce constructeur accepte un paramètre entier et crée une table de hachage dont la taille initiale est spécifiée par la taille de valeur entière. |
3 | Hashtable(int size, float fillRatio) Cela crée une table de hachage qui a une taille initiale spécifiée par taille et un taux de remplissage spécifié par fillRatio. Ce rapport doit être compris entre 0,0 et 1,0 et détermine le niveau de remplissage de la table de hachage avant d'être redimensionnée vers le haut. |
4 | Hashtable(Map < ? extends K, ? extends V > t) Cela construit une table de hachage avec les mappages donnés. |
Outre les méthodes définies par l'interface Map, Hashtable définit les méthodes suivantes -
Sr.Non | Méthode et description |
---|---|
1 | void clear( ) Réinitialise et vide la table de hachage. |
2 | Object clone( ) Renvoie un double de l'objet appelant. |
3 | boolean contains(Object value) Renvoie true si une valeur égale à la valeur existe dans la table de hachage. Renvoie false si la valeur n'est pas trouvée. |
4 | boolean containsKey(Object key) Renvoie true si une clé égale à la clé existe dans la table de hachage. Renvoie false si la clé n'est pas trouvée. |
5 | boolean containsValue(Object value) Renvoie true si une valeur égale à la valeur existe dans la table de hachage. Renvoie false si la valeur n'est pas trouvée. |
6 | Enumeration elements( ) Renvoie une énumération des valeurs contenues dans la table de hachage. |
sept | Object get(Object key) Renvoie l'objet qui contient la valeur associée à la clé. Si la clé n'est pas dans la table de hachage, un objet nul est renvoyé. |
8 | boolean isEmpty( ) Renvoie true si la table de hachage est vide; renvoie false s'il contient au moins une clé. |
9 | Enumeration keys( ) Renvoie une énumération des clés contenues dans la table de hachage. |
dix | Object put(Object key, Object value) Insère une clé et une valeur dans la table de hachage. Renvoie null si la clé n'est pas déjà dans la table de hachage; renvoie la valeur précédente associée à la clé si la clé est déjà dans la table de hachage. |
11 | void rehash( ) Augmente la taille de la table de hachage et répète toutes ses clés. |
12 | Object remove(Object key) Supprime la clé et sa valeur. Renvoie la valeur associée à la clé. Si la clé n'est pas dans la table de hachage, un objet nul est renvoyé. |
13 | int size( ) Renvoie le nombre d'entrées dans la table de hachage. |
14 | String toString( ) Renvoie l'équivalent chaîne d'une table de hachage. |
Exemple
Le programme suivant illustre plusieurs des méthodes prises en charge par cette structure de données -
import java.util.*;
public class HashTableDemo {
public static void main(String args[]) {
// Create a hash map
Hashtable balance = new Hashtable();
Enumeration names;
String str;
double bal;
balance.put("Zara", new Double(3434.34));
balance.put("Mahnaz", new Double(123.22));
balance.put("Ayan", new Double(1378.00));
balance.put("Daisy", new Double(99.22));
balance.put("Qadir", new Double(-19.08));
// Show all balances in hash table.
names = balance.keys();
while(names.hasMoreElements()) {
str = (String) names.nextElement();
System.out.println(str + ": " + balance.get(str));
}
System.out.println();
// Deposit 1,000 into Zara's account
bal = ((Double)balance.get("Zara")).doubleValue();
balance.put("Zara", new Double(bal + 1000));
System.out.println("Zara's new balance: " + balance.get("Zara"));
}
}
Cela produira le résultat suivant -
Production
Qadir: -19.08
Zara: 3434.34
Mahnaz: 123.22
Daisy: 99.22
Ayan: 1378.0
Zara's new balance: 4434.34