what is java hashtable hashtable implementation example
Denne vejledning forklarer, hvad der er en Java HashTable, konstruktører og metoder til Hashtable-klasse, implementering og Hashtable vs Hashmap:
Hvad er en HashTable?
En Hashtable i Java er en række elementer, der er lister. Hver af disse lister betegnes som en spand .
Det kortlægger nøglerne til værdier. I Java implementeres hash-tabellen af klassen 'HashTable'. Denne klasse implementerer kortgrænsefladen og arver ordbogsklassen.
=> Tjek den perfekte Java-træningsvejledning her.
Nogle af de unikke egenskaber ved Hashtable i Java er som følger:
- Det er et array, der indeholder lister eller spande som dets elementer.
- Det har unikke elementer.
- Der er ingen nul-nøgle eller nulværdi i Hashtable.
- Det ligner Hashmap, men er synkroniseret.
Hvad du lærer:
HashTable-klasse i Java
I Java er denne klasse medlem af java.util-pakken. Således skal vi medtage et af følgende udsagn i vores program for at inkludere HashTable klassefunktionalitet.
importer java.util. *;
ELLER
import java.util.HashTable;
En generel klassedeklaration for java.util.HashTable-klassen er angivet nedenfor:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
Her,
- K => type nøgler til HashTable
- V => type kortlagt værdier
HashTable klasse API består af konstruktører, der bruges til at konstruere klasseobjekterne og de forskellige operationer eller metoder, der er en del af klassen, hvilket medfører, at HashTable-klassen fungerer problemfrit.
Konstruktører af HashTable-klasse
Konstruktør prototype | Beskrivelse | |
---|---|---|
Sæt | Sæt | Det returnerer et sæt billede af kortlægningerne på kortet. |
Hashtable () | Standardkonstruktør: opretter et HashTable-klasseobjekt med indledende standardkapacitet og belastningsfaktor. | |
Hashtable (int kapacitet) | Opretter en hash-tabel med den angivne startkapacitet. | |
Hashtable (int kapacitet, float loadFactor) | Opretter et hash-tabelobjekt med den indledende kapacitet = kapacitet og belastningsfaktor = loadFactor. | |
Hashtable (kort t) | Opretter en ny hashTabel fra det givne kort, der er angivet som argumentet. |
Metoder til HashTable-klasse
Metode | Metode Prototype | Beskrivelse |
---|---|---|
klar | ugyldigt klart () | Rydder HashTable ved at nulstille værdierne. |
klon | Objektklon () | Lav en lav kopi af HashTable-objektet og returnerer den. |
beregne | V beregne (K-tast, BiFunction remappingFunction) | Beregner kortlægning mellem den givne nøgle og værdien ved hjælp af remapping-funktionen. |
ComputeIfAbsent | V computeIfAbsent (K-tast, Function mappingFunction) | Beregner kortlægning mellem den givne nøgle og værdien ved hjælp af remapping-funktionen, hvis den angivne nøgle ikke allerede er knyttet til den givne værdi. |
computeIfPresent | V computeIfPresent (K-tast, BiFunction remappingFunction) | Hvis den givne nøgle er til stede, bruges remapping-funktionen til at beregne en ny kortlægning mellem den givne nøgle og værdien. |
elementer | Opregningselementer () | Det returnerer en optælling af værdierne i hash-tabellen. |
lige med | boolske lig (Objekt o) | Sammenligner det givne objekt med HashTable. |
for hver | ugyldig for hver (BiConsumer-handling) | Den givne handling udføres for hvert af HashTable-elementerne, indtil alle elementer er opbrugt. |
getOrDefault | V getOrDefault (Objektnøgle, V standardværdi) | Det returnerer den værdi, som den angivne nøgle er kortlagt eller defaultValue, hvis kortet ikke indeholder nogen kortlægning for nøglen. |
hashCode | int hashCode () | Returnerer HashTable-hash-koden. |
nøgler | Optællingstaster () | Returnerer nøgler i HashTable som en optælling. |
keySet | Indstil nøgleSæt () | Returnerer nøglesættet (taster som et sæt) til HashTable. |
gå | V flette (K-tast, V-værdi, BiFunction remappingFunction) | Kortlægger den givne nøgle med den ikke-nul-værdi ved hjælp af remapping-funktionen, hvis nøglen ikke allerede er til stede eller nul. |
sætte | V put (K-tast, V-værdi) | Indsætter et nyt nøgleværdipar i HashTable. |
sæt alt | ugyldigt putAll (kort t)) | Sætter eller kopierer nøgleværdiparene på det givne kort til HashTable. |
putIfAbsent | V putIfAbsent (K-tast, V-værdi) | Associerer den givne nøgle med nulværdien, hvis nøglen ikke allerede er til stede eller er knyttet til nul. |
fjerne | boolsk fjernelse (Objektnøgle, Objektværdi) | Sletter det givne nøgleværdipar fra HashTable. |
erstatte | V erstat (K-tast, V-værdi) | Den erstatter værdien for den givne nøgle med den angivne værdi. |
erstatte | boolsk erstatning (K-tast, V oldValue, V newValue) | Erstatter den gamle værdi af den givne nøgle med den nye værdi. |
udskift alle | ugyldig erstatte alle (BiFunction-funktion) | Alle poster i HashTable erstattes af den værdi, der opnås ved evaluering af den givne funktion. |
toString | String toString () | Konverterer HashTable-objektet til dets strengrepræsentation. |
værdier | Samlingsværdier () | Returnerer værdierne i HashTable som en samling. |
indeholder | boolean indeholder (Objektværdi) | Kontrollerer, om den givne værdi er til stede i HashTable. Returnerer sandt, hvis andet til stede returnerer falsk. |
indeholder værdi | boolean containValue (objektværdi) | Kontrollerer, om der er en værdi svarende til den givne værdi i HashTable og returnerer true. |
indeholderKey | boolean containKey (Objektnøgle) | Kontrollerer, om der er nogen nøgle, der svarer til den givne nøgle i HashTable, og returnerer sand, hvis ja. |
er tom | boolsk isEmpty () | Kontrollerer, om den givne HashTable er tom, og returnerer sand, hvis ja. |
genvask | beskyttet tomrum rehash () | Det bruges til at øge størrelsen på hash-bordet og genvask alle dets nøgler. |
få | V get (Objektnøgle) | Henter værdien for den givne nøgle. |
fjerne | V fjern (Objektnøgle) | Sletter den givne nøgle og værdi og returnerer denne værdi. |
størrelse | int størrelse () | Returnerer størrelsen eller antallet af elementer, der findes i HashTable. |
Implementering af HashTable
Nedenfor er implementeringen af klassen i Java. Her har vi demonstreret alle de vigtige metoder, der tilbydes af klassen.
manuelle testinterviewspørgsmål til 3 års erfaring
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); } }
Produktion:
Indholdet af Hashtable:
104: Blå
103: Brun
102: Orange
101: Grøn
100: Netværk
Hashtable-værdi ved 101: grøn
Hashtable-værdi ved 105: værdi ikke fundet
Efter fjernelse (102), Hash-tabellen: {104 = Blå, 103 = Brun, 101 = Grøn, 100 = Rød}
Opdateret hashtabel: {104 = Blå, 103 = Brun, 102 = Orange, 101 = Grøn, 100 = Rød}
HashTable Java-eksempel
I dette program definerer vi en hashtable med tasterne som kontohavernavne med deres respektive kontosaldoer som værdier. Først henter vi nøglerne fra HashTable som en optælling. Derefter udskriver vi nøgleværdiparene fra HashTable ved hjælp af denne optælling.
Senere opdaterer vi kontosaldoen for en af indehaverne og udskriver det opdaterede beløb.
Programmet nedenfor viser denne implementering.
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')); } }
Produktion:
Kontosaldoen Hashtable:
NØGLEVÆRDI
Jakob 78,48
Ben 95.43
Dillon 499.22
Lilje 4367.34
Lacy 1200.0
Bens nye kontosaldo: 1095,43
Hashtable Vs Hashmap
HashTable | HashMap |
---|---|
HashTable er langsom at udføre. | HashMap er hurtigere. |
Arver ordbogsklassen. | Arver AbstractMap-klasse. |
Er en ældre klasse. | HashMap-klasse introduceret i JDK 1.2 |
Synkroniseret og trådsikker. | Ikke-synkroniseret og ikke-trådsikker. |
Det synkroniseres internt og kan ikke fortrydes. | Det kan synkroniseres ved hjælp af Collections.synchronizedMap-metoden. |
Ingen nul-nøgle / værdi tilladt. | Tillader nul-nøgle og flere nulværdier. |
Kan krydses ved hjælp af Enumerator og Iterator. | Kan kun krydses ved hjælp af Iterator. |
Ofte stillede spørgsmål
Q # 1) Hvad er Hashtable i Java?
Svar: Det er en ældre klasse, der arver klassen 'ordbog' og gemmer nøgleværdipar.
Q # 2) Hvorfor bruges Hashtable?
Svar: Det bruges til at gemme nøgleværdipar. Så når vi skal gemme nøgleværdiparene i tabelformatet, går vi til HashTable. For det andet kan den gemme flere værdier for den samme nøgle ved hjælp af spande. Datahentning er effektiv i HashTables.
Q # 3)Hvordan opretter du en Hashtable i Java?
Svar: Du kan oprette det ved at instantiere et objekt i klassen java.util.HashTable.
HashTable hashTable = new HashTable();
Ovenstående udsagn opretter en HashTable med navnet 'hashTable' med nøgler og værdier af typen String.
Q # 4) Er Hashtable trådsikker?
Svar: Ja, det er trådsikkert. Hvis trådsikkerhed ikke er påkrævet, kan vi vælge HashMap.
Q # 5) Hvordan fungerer Hashtable internt i Java med et eksempel?
Svar: Internt gemmer den nøgleværdipar i en struktur kaldet spande. Skovlens position bestemmes af nøglens hashCode. Hash-funktionen får placeringen af skovlen ved hjælp af nøglens hashCode.
Konklusion
HashTable består af data gemt i form af nøgleværdipar. Tasterne eller værdierne kan ikke være nul. I Java implementeres det ved hjælp af HashTable-klassen.
Vi har set konstruktørerne og metoderne leveret af HashTable-klassen sammen med implementeringen af HashTable på Java-sprog.
I vores kommende vejledning diskuterer vi HashMap-samlingen.
hvor kan du se anime gratis online
=> Besøg her for den eksklusive Java-træningsundervisningsserie.
Anbefalet læsning
- Java Reflection Tutorial med eksempler
- Java Scanner-klassevejledning med eksempler
- Java Basics: Java Syntax, Java Class og Core Java Concepts
- Hvad er Java Vector | Java Vector Class Tutorial med eksempler
- Java SWING Tutorial: Container, komponenter og håndtering af begivenheder
- Java Array Class Tutorial - java.util.Arrays-klasse med eksempler
- JAVA-vejledning til begyndere: 100+ praktiske Java-videovejledninger
- Java String indeholder () Metodevejledning med eksempler