what is java hashtable hashtable implementation example
Denne opplæringen forklarer hva som er en Java HashTable, konstruktører og metoder for Hashtable Class, Implementation & Hashtable vs Hashmap:
Hva er en HashTable?
En Hashtable i Java er en rekke elementer som er lister. Hver av disse listene betegnes som en bøtte .
Det tilordner nøklene til verdiene. I Java er hash-tabellen implementert av klassen ‘HashTable’. Denne klassen implementerer kartgrensesnittet og arver ordboksklassen.
=> Ta en titt på den perfekte Java-treningsguiden her.
Noen av de unike egenskapene til Hashtable i Java er som følger:
- Det er en matrise som inneholder lister eller bøtter som elementer.
- Den har unike elementer.
- Det er ingen nullnøkkel eller nullverdi i Hashtable.
- Det ligner på Hashmap, men er synkronisert.
Hva du vil lære:
HashTable-klasse i Java
I Java er denne klassen medlem av java.util-pakken. Dermed må vi ta med en av følgende utsagn i vårt program for å inkludere HashTable klassefunksjonalitet.
importer java.util. *;
ELLER
importere java.util.HashTable;
En generell klassedeklarasjon for java.util.HashTable-klassen er gitt nedenfor:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
Her,
- K => type nøkler til HashTable
- V => kartlagt verdi
HashTable-klassen API består av konstruktører som brukes til å konstruere klasseobjektene og de forskjellige operasjonene eller metodene som er en del av klassen som gir en jevn funksjon av HashTable-klassen.
Konstruktører av HashTable-klasse
Konstruktørprototype | Beskrivelse | |
---|---|---|
Sett | Sett | Den returnerer en sett visning av kartleggingen som finnes på kartet. |
Hashtable () | Standardkonstruktør: oppretter et HashTable-klasseobjekt med opprinnelig standard kapasitet og lastfaktor. | |
Hashtable (int kapasitet) | Oppretter en hash-tabell med den angitte startkapasiteten. | |
Hashtable (int kapasitet, float loadFactor) | Oppretter et hash-tabellobjekt med startkapasiteten = kapasitet og belastningsfaktor = loadFactor. | |
Hashtable (kart t) | Oppretter en ny hashTable fra det gitte kartet som er spesifisert som argumentet. |
Metoder for HashTable-klasse
Metode | Metode Prototype | Beskrivelse |
---|---|---|
klar | ugyldig klart () | Tømmer HashTable ved å tilbakestille verdiene. |
klone | Objektklon () | Lager en grunne kopi av HashTable-objektet og returnerer den. |
beregne | V beregne (K-tast, BiFunction remappingFunction) | Beregner kartlegging mellom den gitte nøkkelen og verdien ved hjelp av remapping-funksjonen. |
computeIfAbsent | V computeIfAbsent (K-tast, Funksjon mappingFunction) | Beregner kartlegging mellom den gitte nøkkelen og verdien ved hjelp av remapping-funksjonen hvis den spesifiserte nøkkelen ikke allerede er knyttet til den gitte verdien. |
computeIfPresent | V computeIfPresent (K-tast, BiFunction remappingFunction) | Hvis den gitte nøkkelen er tilstede, brukes remapping-funksjonen til å beregne en ny tilordning mellom den gitte nøkkelen og verdien. |
elementer | Oppregningselementer () | Den returnerer en oppregning av verdiene i hash-tabellen. |
er lik | boolsk lik (Objekt o) | Sammenligner det gitte objektet med HashTable. |
for hver | ugyldig forEach (BiConsumer action) | Den gitte handlingen utføres for hvert av HashTable-elementene til alle elementene er oppbrukt. |
getOrDefault | V getOrDefault (Objektnøkkel, V defaultValue) | Den returnerer verdien den spesifiserte nøkkelen er tilordnet til eller defaultValue hvis kartet ikke inneholder noen tilordning for nøkkelen. |
hashCode | int hashCode () | Returnerer hash-koden til HashTable. |
nøklene | Opptellingstaster () | Returnerer nøkler i HashTable som en oppregning. |
keySet | Set keySet () | Returnerer tastesettet (tastene som et sett) for HashTable. |
gå | V flette (K-tast, V-verdi, BiFunction remappingFunction) | Kartlegger den gitte nøkkelen med ikke-null-verdien ved hjelp av remapping-funksjonen hvis nøkkelen ikke allerede er tilstede eller null. |
sette | V put (K-tast, V-verdi) | Setter inn et nytt nøkkelverdipar i HashTable. |
putt alle | void putAll (Map t)) | Setter eller kopierer nøkkelverdiparene til det gitte kartet til HashTable. |
putIfAbsent | V putIfAbsent (K-tast, V-verdi) | Knytter den gitte nøkkelen til nullverdien hvis nøkkelen ikke allerede er tilstede eller assosiert med null. |
ta vekk | boolsk fjern (Objektnøkkel, Objektverdi) | Sletter det gitte nøkkelverdiparet fra HashTable. |
erstatte | V erstatt (K-tast, V-verdi) | Den erstatter verdien til den gitte nøkkelen med den angitte verdien. |
erstatte | boolsk erstatning (K-tast, V oldValue, V newValue) | Erstatter den gamle verdien til den gitte nøkkelen med den nye verdien. |
erstatte alle | ugyldig erstatte alle (BiFunction-funksjon) | Alle oppføringene i HashTable erstattes av verdien som oppnås ved å evaluere den gitte funksjonen. |
toString | String toString () | Konverterer HashTable-objektet til strengrepresentasjonen. |
verdier | Samlingsverdier () | Returnerer verdiene i HashTable som en samling. |
inneholder | boolsk inneholder (Objektverdi) | Sjekker om den gitte verdien er til stede i HashTable. Returnerer sant hvis til stede ellers returnerer falsk. |
inneholder verdi | boolean containsValue (Objektverdi) | Sjekker om det er en verdi lik den gitte verdien i HashTable og returnerer true. |
inneholder nøkkel | boolsk inneholderKey (Objektnøkkel) | Sjekker om det er noen nøkler som er lik den gitte nøkkelen i HashTable og returnerer true hvis ja. |
er tom | boolsk isEmpty () | Sjekker om den gitte HashTable er tom og returnerer true hvis ja. |
rehash | beskyttet tomrom rehash () | Den brukes til å øke størrelsen på hasjbordet og skyver alle tastene på nytt. |
få | V get (Objektnøkkel) | Henter verdien for den gitte nøkkelen. |
ta vekk | V fjerne (Objektnøkkel) | Sletter den gitte nøkkelen og verdien og returnerer denne verdien. |
størrelse | int størrelse () | Returnerer størrelsen eller antall elementer som finnes i HashTable. |
Implementering av HashTable
Nedenfor er implementeringen av klassen i Java. Her har vi demonstrert alle viktige metoder som tilbys av klassen.
hvordan lage en rekke strenger
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); } }
Produksjon:
Innholdet i Hashtable:
104: Blå
103: Brun
102: Oransje
101: Grønn
100: Nettverk
Hashtable-verdi på 101: grønn
Hashtable-verdi ved 105: Verdi ikke funnet
Etter fjerning (102), Hash-tabellen: {104 = Blå, 103 = Brun, 101 = Grønn, 100 = Rød}
Oppdatert hasjtabell: {104 = Blå, 103 = Brun, 102 = Oransje, 101 = Grønn, 100 = Rød}
HashTable Java-eksempel
I dette programmet definerer vi en hashtable med tastene som kontoinnehavernavn med deres respektive kontosaldoer som verdier. Først henter vi nøklene fra HashTable som en oppregning. Deretter skriver vi ut nøkkelverdiparene fra HashTable ved å bruke denne oppføringen.
Senere oppdaterer vi kontosaldoen til en av eierne og skriver ut det oppdaterte beløpet.
Programmet nedenfor viser denne implementeringen.
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')); } }
Produksjon:
Kontosaldoen Hashtable:
NØKKELVERDI
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 sakte å utføre. | HashMap er raskere. |
Arver ordboksklassen. | Arver AbstractMap-klasse. |
Er en eldre klasse. | HashMap-klasse introdusert i JDK 1.2 |
Synkronisert og trådsikker. | Ikke-synkronisert og ikke-trådsikker. |
Den er synkronisert internt og kan ikke angres. | Den kan synkroniseres ved hjelp av Collections.synchronizedMap-metoden. |
Ingen nullnøkkel / verdi tillatt. | Tillater nullnøkkel og flere nullverdier. |
Kan krysses ved hjelp av Enumerator og Iterator. | Kan bare krysses ved hjelp av Iterator. |
ofte stilte spørsmål
Q # 1) Hva er Hashtable i Java?
Svar: Det er en eldre klasse som arver klassen 'ordbok' og lagrer nøkkelverdipar.
Q # 2) Hvorfor Hashtable brukes?
Svar: Den brukes til å lagre nøkkelverdipar. Så når vi trenger å lagre nøkkelverdiparene i tabellformat, går vi for HashTable. For det andre kan den lagre flere verdier for den samme nøkkelen ved hjelp av bøtter. Datainnhenting er effektiv i HashTables.
Q # 3)Hvordan lager du en Hashtable i Java?
Svar: Du kan opprette den ved å sette i gang et objekt av klassen java.util.HashTable.
HashTable hashTable = new HashTable();
Ovennevnte uttalelse oppretter en HashTable med navnet 'hashTable' med nøkler og verdier av typen String.
Q # 4) Er Hashtable trådsikker?
Svar: Ja, det er trådsikkert. Hvis trådsikkerhet ikke er nødvendig, kan vi velge HashMap.
Q # 5) Hvordan fungerer Hashtable internt i Java med et eksempel?
Svar: Internt lagrer den nøkkelverdipar i en struktur som kalles bøtter. Skuffens posisjon bestemmes av nøkkelens hashCode. Hashfunksjonen får bøtteplasseringen ved hjelp av nøkkelens hashCode.
Konklusjon
HashTable består av data som er lagret i form av nøkkelverdipar. Nøklene eller verdiene kan ikke være null. I Java implementeres den ved hjelp av HashTable-klassen.
Vi har sett konstruktørene og metodene som tilbys av HashTable-klassen sammen med implementeringen av HashTable på Java-språk.
I vår kommende opplæring vil vi diskutere HashMap-samlingen.
gratis tidsklokke-app for pc
=> Besøk her for den eksklusive opplæringsserien for Java Training.
Anbefalt lesing
- Java Reflection Tutorial med eksempler
- Java-skannerklasseopplæring med eksempler
- Java Basics: Java Syntax, Java Class og Core Java Concepts
- Hva er Java Vector | Java Vector Class Tutorial med eksempler
- Java SWING Tutorial: Container, Components and Event Handling
- Java Array Class Tutorial - java.util.Arrays Class med eksempler
- JAVA-opplæring for nybegynnere: 100+ praktiske Java-videoveiledninger
- Java String inneholder () Metodeopplæring med eksempler