what is java hashtable hashtable implementation example
Ce didacticiel explique ce qu'est un HashTable Java, les constructeurs et les méthodes de la classe Hashtable, de l'implémentation et du Hashtable vs Hashmap:
Qu'est-ce qu'un HashTable?
Une table de hachage en Java est un tableau d'éléments qui sont des listes. Chacune de ces listes est qualifiée de baquet .
Il mappe les clés aux valeurs. En Java, la table de hachage est implémentée par la classe ‘HashTable’. Cette classe implémente l'interface de carte et hérite de la classe de dictionnaire.
=> Consultez le guide de formation Perfect Java ici.
Certaines des caractéristiques uniques de Hashtable en Java sont les suivantes:
- C'est un tableau qui contient des listes ou des buckets comme éléments.
- Il a des éléments uniques.
- Il n'y a pas de clé nulle ou de valeur nulle dans la table de hachage.
- Il est similaire à Hashmap mais est synchronisé.
Ce que vous apprendrez:
Classe HashTable en Java
En Java, cette classe est membre du package java.util. Nous devons donc inclure l'une des instructions suivantes dans notre programme pour inclure la fonctionnalité de classe HashTable.
import java.util. *;
OU
import java.util.HashTable;
Une déclaration de classe générale pour la classe java.util.HashTable est donnée ci-dessous:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
Ici,
- K => type de clés du HashTable
- V => type de valeurs mappées
L'API de classe HashTable se compose de constructeurs qui sont utilisés pour construire les objets de classe et les diverses opérations ou méthodes qui font partie de la classe, ce qui permet un fonctionnement fluide de la classe HashTable.
Constructeurs de la classe HashTable
Prototype de constructeur | La description | |
---|---|---|
Ensemble | Ensemble | Il renvoie une vue d'ensemble des mappages contenus dans la carte. |
Table de hachage () | Constructeur par défaut: crée un objet de classe HashTable avec la capacité et le facteur de charge par défaut initiaux. | |
Hashtable (capacité int) | Crée une table de hachage avec la capacité initiale spécifiée. | |
Hashtable (capacité int, float loadFactor) | Crée un objet de table de hachage avec la capacité initiale = capacité et le facteur de charge = loadFactor. | |
Hashtable (carte t) | Crée une nouvelle table de hachage à partir de la carte donnée spécifiée comme argument. |
Méthodes de classe HashTable
Méthode | Prototype de méthode | La description |
---|---|---|
dégager | vide clair () | Efface le HashTable en réinitialisant les valeurs. |
cloner | Clone d'objet () | Crée une copie superficielle de l'objet HashTable et la renvoie. |
calculer | Calcul V (touche K, fonction de remappage BiFonction) | Calcule le mappage entre la clé donnée et la valeur à l'aide de la fonction de remappage. |
computeIfAbsent | V computeIfAbsent (touche K, fonction de mappage de fonction) | Calcule le mappage entre la clé donnée et la valeur à l'aide de la fonction de remappage si la clé spécifiée n'est pas déjà associée à la valeur donnée. |
computeIfPresent | V computeIfPresent (touche K, fonction de remappage BiFonction) | Si la clé donnée est présente, la fonction de remappage est utilisée pour calculer un nouveau mappage entre la clé donnée et la valeur. |
éléments | Éléments d'énumération () | Il renvoie une énumération des valeurs de la table de hachage. |
équivaut à | booléen égal (objet o) | Compare l'objet donné avec le HashTable. |
pour chaque | void forEach (action BiConsumer) | L'action donnée est effectuée pour chacun des éléments HashTable jusqu'à ce que tous les éléments soient épuisés. |
getOrDefault | V getOrDefault (clé d'objet, V defaultValue) | Il renvoie la valeur à laquelle la clé spécifiée est mappée ou defaultValue si la mappe ne contient aucun mappage pour la clé. |
hashCode | int hashCode () | Renvoie le code de hachage du HashTable. |
clés | Clés d'énumération () | Renvoie les clés du HashTable sous forme d'énumération. |
keySet | Définir keySet () | Renvoie l'ensemble de clés (clés en tant qu'ensemble) pour le HashTable. |
aller | Fusion V (clé K, valeur V, fonction de remappage BiFonction) | Mappe la clé donnée avec la valeur non nulle à l'aide de la fonction de remappage si la clé n'est pas déjà présente ou nulle. |
mettre | V put (clé K, valeur V) | Insère une nouvelle paire clé-valeur dans le HashTable. |
Met tout | void putAll (Carte t)) | Place ou copie les paires clé-valeur de la carte donnée dans le HashTable. |
putIfAbsent | V putIfAbsent (clé K, valeur V) | Associe la clé donnée à la valeur null si la clé n'est pas déjà présente ou associée à null. |
supprimer | boolean remove (clé d'objet, valeur d'objet) | Supprime la paire clé-valeur donnée du HashTable. |
remplacer | V remplacer (clé K, valeur V) | Il remplace la valeur de la clé donnée par la valeur spécifiée. |
remplacer | boolean replace (clé K, V oldValue, V newValue) | Remplace l'ancienne valeur de la clé donnée par la nouvelle valeur. |
remplace tout | void replaceAll (fonction BiFonction) | Toutes les entrées du HashTable sont remplacées par la valeur obtenue à partir de l'évaluation de la fonction donnée. |
toString | Chaîne toString () | Convertit l'objet HashTable en sa représentation sous forme de chaîne. |
valeurs | Valeurs de collection () | Renvoie les valeurs du HashTable sous forme de collection. |
contient | boolean contient (valeur de l'objet) | Vérifie si la valeur donnée est présente dans le HashTable. Renvoie vrai si présent sinon renvoie faux. |
contient de la valeur | boolean containsValue (valeur de l'objet) | Vérifie s'il existe une valeur égale à la valeur donnée dans le HashTable et renvoie true. |
contientKey | boolean containsKey (clé d'objet) | Vérifie s'il existe une clé égale à la clé donnée dans le HashTable et renvoie true si oui. |
est vide | booléen isEmpty () | Vérifie si le HashTable donné est vide et renvoie true si oui. |
répéter | rehash vide protégé () | Il est utilisé pour augmenter la taille de la table de hachage et rehash toutes ses clés. |
avoir | V get (clé d'objet) | Récupère la valeur de la clé donnée. |
supprimer | V remove (clé d'objet) | Supprime la clé et la valeur données et renvoie cette valeur. |
Taille | taille int () | Renvoie la taille ou le nombre d'éléments présents dans le HashTable. |
Implémentation de HashTable
Ci-dessous, l'implémentation de la classe en Java. Ici, nous avons démontré toutes les méthodes importantes fournies par la classe.
quel est le meilleur os pour pc
import java.util.*; class Main{ public static void main(String args()){ //create a Hashtable and initiliaze it Hashtable hash_tab=new Hashtable (); hash_tab.put(100,'Red'); hash_tab.put(101,'Green'); hash_tab.put(104,'Blue'); hash_tab.put(102,'Orange'); hash_tab.put(103,'Brown'); //obtain entrySet for the Hashtable and print the elments System.out.println('The contents of Hashtable:'); for(Map.Entry m:hash_tab.entrySet()){ System.out.println(m.getKey()+' : '+m.getValue()); } //getOrDefault operation => get the value at given key or output default message System.out.println('Hashtable Value at 101: ' + hash_tab.getOrDefault(101, 'Value Not Found')); System.out.println('Hashtable Value at 105: ' +hash_tab.getOrDefault(105, 'Value Not Found')); //remove operation => delete value at given key hash_tab.remove(102); System.out.println('After remove(102), the Hash Table: '+ hash_tab); //putIfAbsent operation=>update the key-value pair in table if absent hash_tab.putIfAbsent(102,'Orange'); System.out.println('Updated Hash Table: '+hash_tab); } }
Production:
Le contenu de Hashtable:
104: Bleu
103: marron
102: orange
101: vert
100: Réseau
Valeur de la table de hachage à 101: vert
Valeur de la table de hachage à 105: valeur introuvable
Après la suppression (102), la table de hachage: {104 = bleu, 103 = marron, 101 = vert, 100 = rouge}
Table de hachage mise à jour: {104 = Bleu, 103 = Marron, 102 = Orange, 101 = Vert, 100 = Rouge}
Exemple Java HashTable
Dans ce programme, nous définissons une table de hachage avec les clés en tant que noms de titulaires de compte avec leurs soldes de comptes respectifs en tant que valeurs. Tout d'abord, nous récupérons les clés du HashTable sous forme d'énumération. Ensuite, en utilisant cette énumération, nous imprimons les paires clé-valeur à partir du HashTable.
Plus tard, nous mettons à jour le solde du compte de l'un des titulaires et imprimons le montant mis à jour.
Le programme ci-dessous montre cette implémentation.
import java.util.*; public class Main { public static void main(String args()) { // Create a Hashtable of account balance Hashtable acc_balance = new Hashtable(); Enumeration person_names; String name_str; double balance; //initialize the Hashtable acc_balance.put('Lily', new Double(4367.34)); acc_balance.put('Ben', new Double(95.43)); acc_balance.put('Lacy', new Double(1200.00)); acc_balance.put('Dillon', new Double(499.22)); acc_balance.put('James', new Double(78.48)); // retrieve the keys of the Hashtable person_names = acc_balance.keys(); System.out.println('The account balance Hashtable:'); System.out.println(' KEY VALUE '); //print the contents of Hashtable while(person_names.hasMoreElements()) { name_str = (String) person_names.nextElement(); System.out.println(' ' + name_str + ' ' + acc_balance.get(name_str)); } System.out.println(); // Update Ben's Account by adding 1000 to it. balance = ((Double)acc_balance.get('Ben')).doubleValue(); acc_balance.put('Ben', new Double(balance + 1000)); //print the contents of updated account System.out.println('Ben's new Account balance: ' + acc_balance.get('Ben')); } }
Production:
La table de hachage du solde du compte:
VALEUR CLÉ
Jacques 78,48
Ben 95.43
Dillon 499.22
Lily 4367.34
Dentelle 1200.0
Solde du nouveau compte de Ben: 1095,43
Hashtable Vs Hashmap
HashTable | HashMap |
---|---|
HashTable est lent à exécuter. | HashMap est plus rapide. |
Hérite de la classe de dictionnaire. | Hérite de la classe AbstractMap. |
Est une classe héritée. | Classe HashMap introduite dans JDK 1.2 |
Synchronisé et thread-safe. | Non synchronisé et non thread-safe. |
Il est synchronisé en interne et ne peut pas être annulé. | Il peut être synchronisé à l'aide de la méthode Collections.synchronizedMap. |
Aucune clé / valeur nulle autorisée. | Autorise la clé nulle et plusieurs valeurs nulles. |
Peut être parcouru à l'aide de Enumerator et Iterator. | Peut être parcouru uniquement en utilisant Iterator. |
Questions fréquemment posées
Q # 1) Qu'est-ce que Hashtable en Java?
Répondre: Il s'agit d'une ancienne classe qui hérite de la classe «dictionary» et stocke les paires clé-valeur.
Q # 2) Pourquoi Hashtable est-il utilisé?
Répondre: Il est utilisé pour stocker des paires clé-valeur. Ainsi, lorsque nous devons stocker les paires clé-valeur au format tabulaire, nous optons pour HashTable. Deuxièmement, il peut stocker plusieurs valeurs pour la même clé à l'aide de buckets. La récupération des données est efficace dans les HashTables.
Q # 3)Comment créer une table de hachage en Java?
Répondre: Vous pouvez le créer en instanciant un objet de la classe java.util.HashTable.
HashTable hashTable = new HashTable();
L'instruction ci-dessus crée un HashTable nommé «hashTable» avec des clés et des valeurs de type String.
Q # 4) Hashtable est-il thread-safe?
Répondre: Oui, c'est thread-safe. Si la sécurité des threads n'est pas requise, nous pouvons opter pour HashMap.
Q # 5) Comment Hashtable fonctionne en interne en Java avec un exemple?
Répondre: En interne, il stocke les paires clé-valeur dans une structure appelée buckets. La position du compartiment est déterminée par le hashCode de la clé. La fonction de hachage obtient l'emplacement du compartiment à l'aide du hashCode de la clé.
Conclusion
HashTable se compose de données stockées sous la forme de paires clé-valeur. Les clés ou les valeurs ne peuvent pas être nulles. En Java, il est implémenté à l'aide de la classe HashTable.
Nous avons vu les constructeurs et les méthodes fournis par la classe HashTable ainsi que l'implémentation de HashTable en langage Java.
Dans notre prochain tutoriel, nous discuterons de la collection HashMap.
questions et réponses d'entrevue de développeur de base de données pdf
=> Visitez ici pour la série exclusive de didacticiels de formation Java.
lecture recommandée
- Tutoriel de réflexion Java avec des exemples
- Tutoriel de classe de scanner Java avec des exemples
- Principes de base de Java: syntaxe Java, classe Java et principaux concepts Java
- Qu'est-ce que le vecteur Java | Tutoriel de classe vectorielle Java avec des exemples
- Tutoriel Java SWING: Conteneur, composants et gestion des événements
- Tutoriel sur les classes Java Array - Classe java.util.Arrays avec exemples
- Tutoriel JAVA pour les débutants: plus de 100 tutoriels vidéo Java pratiques
- Tutoriel sur la méthode Java String contains () avec des exemples