what is java hashtable hashtable implementation example
Aquest tutorial explica què és una taula HashTable, constructors i mètodes de classe de Hashtable, implementació i Hashtable contra Hashmap:
Què és un HashTable?
Un Hashtable a Java és un conjunt d'elements que són llistes. Cadascuna d’aquestes llistes s’anomena a cubell .
Assigna les claus als valors. A Java, la taula de hash és implementada per la classe 'HashTable'. Aquesta classe implementa la interfície del mapa i hereta la classe del diccionari.
=> Consulteu la guia de formació Java perfecta aquí.
Algunes de les característiques úniques de Hashtable a Java són les següents:
- És una matriu que conté llistes o dipòsits com a elements.
- Té elements únics.
- No hi ha cap clau o valor nul a la Taula de hash.
- És similar a Hashmap però està sincronitzat.
Què aprendreu:
Classe HashTable a Java
A Java, aquesta classe és membre del paquet java.util. Per tant, hem d'incloure una de les afirmacions següents al nostre programa per incloure la funcionalitat de la classe HashTable.
import java.util. *;
O
import java.util.Hashtable;
A continuació es proporciona una declaració general de classe per a la classe java.util.HashTable:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
Aquí,
- K => tipus de tecles de la Taula de hash
- V => tipus de valors assignats
L'API de classe HashTable consta de constructors que s'utilitzen per construir els objectes de la classe i les diverses operacions o mètodes que formen part de la classe que proporciona un bon funcionament de la classe HashTable.
Constructors de la classe HashTable
Prototip de constructor | Descripció | |
---|---|---|
Conjunt | Conjunt | Retorna una vista conjunta dels mapatges continguts al mapa. |
Taula de hash () | Constructor per defecte: crea un objecte de classe HashTable amb capacitat per defecte inicial i factor de càrrega. | |
Taula de hash (capacitat int) | Crea una taula de resum amb la capacitat inicial especificada. | |
Taula d’hastes (capacitat int, factor de càrrega flotant) | Crea un objecte de taula de hash amb la capacitat inicial = capacitat i el factor de càrrega = loadFactor. | |
Taula de hash (mapa t) | Crea un nou hashTable a partir del mapa especificat com a argument. |
Mètodes de la classe HashTable
Mètode | Mètode prototip | Descripció |
---|---|---|
clar | void clear () | Esborra la HashTable restablint els valors. |
clonar | Clon d'objectes () | Fa una còpia superficial de l'objecte HashTable i el torna. |
calcular | Càlcul en V (tecla K, funció de mapatge de BiFunction) | Calcula el mapatge entre la clau donada i el valor mitjançant la funció de remapatge. |
computeIfAbsent | V computeIfAbsent (tecla K, funció assignació de funcions) | Calcula el mapatge entre la clau donada i el valor mitjançant la funció de remapatge si la clau especificada no està associada al valor donat. |
computeIfPresent | V computeIfPresent (tecla K, BiFunction remappingFunction) | Si la clau donada és present, la funció de remapatge s'utilitza per calcular un nou mapatge entre la clau donada i el valor. |
elements | Elements d’enumeració () | Retorna una enumeració dels valors de la taula de hash. |
és igual | booleà és igual (objecte o) | Compara l'objecte donat amb la Taula Hash. |
per cadascú | void forEach (acció BiConsumer) | L'acció donada es realitza per a cadascun dels elements de HashTable fins que s'esgotin tots els elements. |
getOrDefault | V getOrDefault (clau d'objecte, V defaultValue) | Retorna el valor al qual s’assigna la clau especificada o DefaultValue si el mapa no conté cap assignació per a la clau. |
hashCode | int hashCode () | Retorna el codi de hash de la Taula de hash. |
claus | Claus d'enumeració () | Retorna les claus de la Taula de hash com a enumeració. |
keySet | Estableix keySet () | Retorna el conjunt de tecles (tecles com a conjunt) de la Taula de hash. |
vaja | Combinació en V (tecla K, valor en V, funció de mapatge de BiFunció) | Assigna la clau donada amb el valor que no és nul mitjançant la funció de remapatge si la clau no està present o és nul·la. |
posar | V put (clau K, valor V) | Insereix un nou parell clau-valor a la Taula de hash. |
putAll | void putAll (Mapa t)) | Posa o copia els parells clau-valor del mapa donat a la Taula de hash. |
putIfAbsent | V putIfAbsent (clau K, valor V) | Associa la clau donada al valor nul si la clau no està present o està associada a nul. |
eliminar | eliminar booleà (clau d'objecte, valor d'objecte) | Suprimeix el parell clau-valor donat de la Taula de hash. |
substituir | Substitució V (tecla K, valor V) | Substitueix el valor de la clau donada pel valor especificat. |
substituir | reemplaçament booleà (clau K, V valor antic, V valor nou) | Substitueix el valor antic de la clau donada pel valor nou. |
substituirTots | void replaceAll (funció BiFunction) | Totes les entrades de la HashTable se substitueixen pel valor que s’obté en avaluar la funció donada. |
toString | String toString () | Converteix l'objecte HashTable en la seva representació de cadena. |
valors | Valors de col·lecció () | Retorna els valors de la Taula de hash com a col·lecció. |
conté | booleà conté (valor de l'objecte) | Comprova si el valor donat és present a la Taula d’Hash. Retorna cert si present else torna fals. |
conté valor | booleà contéValor (valor de l'objecte) | Comprova si hi ha un valor igual al valor donat a la Taula de hash i torna true. |
conté Clau | booleà contéKey (clau d'objecte) | Comprova si hi ha alguna tecla igual a la tecla donada a la Taula de hash i torna si és veritable. |
està buit | boolean isEmpty () | Comprova si la Taula de hash donada està buida i torna si és veritable si és així. |
repetició | rehash buit protegit () | S’utilitza per augmentar la mida de la taula de hash i torna a revisar totes les seves claus. |
aconseguir | V get (clau d'objecte) | Recupera el valor de la clau donada. |
eliminar | Suprimeix V (clau d'objecte) | Suprimeix la clau i el valor proporcionats i retorna aquest valor. |
mida | int size () | Retorna la mida o el nombre d'elements presents a la Taula de hash. |
Implementació de HashTable
A continuació es mostra la implementació de la classe a Java. Aquí hem demostrat tots els mètodes importants que proporciona la classe.
Qa analista entrevista preguntes i respostes
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); } }
Sortida:
El contingut de Hashtable:
104: Blau
103: Marró
102: taronja
101: Verd
100: Xarxa
Valor de Hashtable a 101: verd
Valor Hashtable a 105: valor no trobat
Després d'eliminar (102), la Taula de hash: {104 = Blau, 103 = Marró, 101 = Verd, 100 = Vermell}
Taula de hash actualitzada: {104 = Blau, 103 = Marró, 102 = Taronja, 101 = Verd, 100 = Vermell}
Exemple de Java de HashTable
En aquest programa, definim un hashtable amb les claus com els noms del titular del compte i els seus respectius saldos de compte com a valors. En primer lloc, recuperem les claus de la Taula de hash com a enumeració. A continuació, mitjançant aquesta enumeració, imprimim els parells clau-valor des de la Taula de hash.
Més endavant, actualitzem el saldo del compte d’un dels titulars i imprimim l’import actualitzat.
El programa que es mostra a continuació mostra aquesta implementació.
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')); } }
Sortida:
Hashtable del saldo del compte:
VALOR CLAU
Jaume 78,48
Ben 95,43
Dillon 499,22
Lily 4367,34
Lacy 1200.0
Saldo del nou compte de Ben: 1095,43
Hashtable Vs Hashmap
HashTable | HashMap |
---|---|
HashTable s’executa lentament. | HashMap és més ràpid. |
Classe de diccionari d’herències. | Hereta la classe AbstractMap. |
És una classe heretada. | La classe HashMap introduïda a JDK 1.2 |
Sincronitzada i segura de fils. | No sincronitzat i sense fils. |
Es sincronitza internament i no es pot desfer. | Es pot sincronitzar mitjançant el mètode Collections.synchronizedMap. |
No es permet cap valor / clau nul. | Permet claus nuls i diversos valors nuls. |
Es pot recórrer mitjançant Enumerator i Iterator. | Només es pot recórrer amb Iterator. |
Preguntes freqüents
P # 1) Què és Hashtable a Java?
Resposta: És una classe heretada que hereta la classe 'diccionari' i emmagatzema parells valor-clau.
Q # 2) Per què s’utilitza Hashtable?
Resposta: S'utilitza per emmagatzemar parells clau-valor. Per tant, quan necessitem emmagatzemar els parells clau-valor en format tabular, anem per HashTable. En segon lloc, pot emmagatzemar diversos valors per a la mateixa clau mitjançant compartiments. La recuperació de dades és eficient a HashTables.
Q # 3)Com es crea una taula d’hastes a Java?
Resposta: Podeu crear-lo instanciant un objecte de la classe java.util.HashTable.
HashTable hashTable = new HashTable();
L'afirmació anterior crea una taula de hash anomenada 'hashTable' amb claus i valors del tipus String.
Q # 4) És segur Hashtable per a fils?
Resposta: Sí, és apte per a fils. En cas que no sigui necessària la seguretat del fil, podem optar per HashMap.
Q # 5) Com funciona Hashtable internament a Java amb un exemple?
Resposta: Internament emmagatzema parells clau-valor en una estructura anomenada cubs. La posició del dipòsit ve determinada pel codi hash de la clau. La funció hash obté la ubicació del dipòsit mitjançant el codi hash de la clau.
Conclusió
HashTable consisteix en dades emmagatzemades en forma de parells clau-valor. Les claus o els valors no poden ser nuls. A Java, s’implementa mitjançant la classe HashTable.
Hem vist els constructors i mètodes proporcionats per la classe HashTable juntament amb la implementació de HashTable en llenguatge Java.
Al nostre proper tutorial, parlarem de la col·lecció HashMap.
com proveu els serveis web
=> Visiteu aquí la sèrie exclusiva de cursos de formació de Java.
Lectura recomanada
- Tutorial de reflexió de Java amb exemples
- Tutorial de classe de Java Scanner amb exemples
- Conceptes bàsics de Java: sintaxi de Java, Java Class i conceptes bàsics de Java
- Què és Java Vector | Tutorial de Java Vector Class amb exemples
- Tutorial Java SWING: Gestió de contenidors, components i esdeveniments
- Tutorial de classe Java Array: classe java.util.Arrays amb exemples
- Tutorial JAVA per a principiants: més de 100 tutorials pràctics de vídeo Java
- Java String conté () Tutorial de mètode amb exemples