what is java hashtable hashtable implementation example
Acest tutorial explică ce este un Java HashTable, constructorii și metodele clasei Hashtable, implementare și Hashtable vs Hashmap:
Ce este un HashTable?
Un Hashtable în Java este o serie de elemente care sunt liste. Fiecare dintre aceste liste este denumită ca găleată .
Acesta mapează cheile la valori. În Java, tabelul hash este implementat de clasa „HashTable”. Această clasă implementează interfața hărții și moștenește clasa dicționar.
=> Consultați aici Ghidul perfect de instruire Java.
Unele dintre caracteristicile unice ale Hashtable în Java sunt următoarele:
- Este o matrice care conține liste sau găleți ca elemente.
- Are elemente unice.
- Nu există nicio cheie nulă sau valoare nulă în Hashtable.
- Este similar cu Hashmap, dar este sincronizat.
Ce veți învăța:
HashTable Class În Java
În Java, această clasă este membru al pachetului java.util. Astfel, trebuie să includem una dintre următoarele afirmații în programul nostru pentru a include funcționalitatea clasei HashTable.
import java.util. *;
SAU
import java.util.HashTable;
O declarație generală de clasă pentru clasa java.util.HashTable este dată mai jos:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
Aici,
- K => tipul tastelor HashTable
- V => tipul de valori mapate
API-ul clasei HashTable constă din constructori care sunt utilizați pentru a construi obiectele clasei și diferitele operații sau metode care fac parte din clasă, ceea ce aduce o funcționare lină a clasei HashTable.
Constructorii clasei HashTable
Prototipul constructorului | Descriere | |
---|---|---|
A stabilit | A stabilit | Acesta returnează o vizualizare setată a mapărilor conținute în hartă. |
Hashtable () | Constructor implicit: creează un obiect de clasă HashTable cu capacitatea implicită inițială și factorul de încărcare. | |
Hashtable (capacitate int) | Creează un tabel hash cu capacitatea inițială specificată. | |
Hashtable (capacitate int, float loadFactor) | Creează un obiect de tabel hash cu capacitatea inițială = capacitate și factorul de încărcare = loadFactor. | |
Hashtable (Harta t) | Creează un nou hashTable din harta dată specificată ca argument. |
Metode ale clasei HashTable
Metodă | Metoda prototip | Descriere |
---|---|---|
clar | gol clar () | Șterge HashTable resetând valorile. |
clona | Clonare obiect () | Face o copie superficială a obiectului HashTable și îl returnează. |
calcula | Calcul V (cheie K, funcție de remapare BiFunction) | Calculează maparea între cheia dată și valoarea utilizând funcția de remapare. |
computeIfAbsent | V computeIfAbsent (tasta K, funcția mapare funcție) | Calculează maparea între cheia dată și valoarea utilizând funcția de remapare dacă cheia specificată nu este deja asociată cu valoarea dată. |
computeIfPresent | V computeIfPresent (tasta K, funcția de remapare BiFunction) | Dacă cheia dată este prezentă, funcția de remapare este utilizată pentru a calcula o nouă mapare între cheia dată și valoare. |
elemente | Elemente de enumerare () | Returnează o enumerare a valorilor din tabelul hash. |
este egal | boolean este egal (Obiectul o) | Compară obiectul dat cu HashTable. |
pentru fiecare | nul pentru fiecare (acțiune BiConsumer) | Acțiunea dată este efectuată pentru fiecare dintre elementele HashTable până când toate elementele sunt epuizate. |
getOrDefault | V getOrDefault (cheie obiect, V defaultValue) | Returnează valoarea la care este mapată cheia specificată sau defaultValue dacă harta nu conține nicio mapare pentru cheie. |
hashCode | int hashCode () | Returnează codul hash al HashTable. |
chei | Chei de enumerare () | Returnează cheile din HashTable ca enumerare. |
keySet | Set keySet () | Returnează setul de taste (taste ca set) pentru HashTable. |
merge | V merge (tasta K, valoarea V, funcția de remapare BiFunction) | Mapează cheia dată cu valoarea non-nulă utilizând funcția de remapare dacă cheia nu este deja prezentă sau nulă. |
a pune | V put (tasta K, valoarea V) | Inserează o nouă pereche cheie-valoare în HashTable. |
pune tot | void putAll (Harta t)) | Pune sau copiază perechile cheie-valoare ale hărții date în HashTable. |
putIfAbsent | V putIfAbsent (cheie K, valoare V) | Asociază cheia dată cu valoarea nulă dacă cheia nu este deja prezentă sau este asociată cu valoarea nulă. |
elimina | eliminare booleană (cheie obiect, valoare obiect) | Șterge perechea cheie-valoare dată din HashTable. |
a inlocui | Înlocuire V (tasta K, valoare V) | Înlocuiește valoarea cheii date cu valoarea specificată. |
a inlocui | înlocuire booleană (tasta K, V oldValue, V newValue) | Înlocuiește vechea valoare a cheii date cu noua valoare. |
înlocuiește-le pe toate | void replaceAll (funcția BiFunction) | Toate intrările din HashTable sunt înlocuite cu valoarea care se obține din evaluarea funcției date. |
toString | String toString () | Convertește obiectul HashTable în reprezentarea sa de șiruri. |
valori | Valorile colecției () | Returnează valorile din HashTable ca o colecție. |
conține | boolean conține (valoarea obiectului) | Verifică dacă valoarea dată este prezentă în HashTable. Returnează true dacă prezentul else returnează false. |
conține valoare | boolean conține Valoare (valoarea obiectului) | Verifică dacă există o valoare egală cu valoarea dată în HashTable și returnează true. |
conține Cheie | boolean conține Key (cheie obiect) | Verifică dacă există o cheie egală cu cheia dată în HashTable și returnează adevărat dacă da. |
este gol | boolean isEmpty () | Verifică dacă tabelul HashTable dat este gol și returnează adevărat dacă da. |
reface | protejat gol rehash () | Se folosește pentru a crește dimensiunea tabelului hash și pentru a revizui toate tastele sale. |
obține | V get (cheia obiectului) | Preluează valoarea pentru cheia dată. |
elimina | V remove (cheie obiect) | Șterge cheia și valoarea date și returnează această valoare. |
mărimea | int size () | Returnează dimensiunea sau numărul de elemente prezente în HashTable. |
Implementarea HashTable
Mai jos este implementarea clasei în Java. Aici am demonstrat toate metodele importante oferite de clasă.
cum se face o serie de șiruri
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); } }
Ieșire:
Conținutul Hashtable:
104: Albastru
103: Maro
102: Portocaliu
101: Verde
100: Rețea
Valoarea Hashtable la 101: verde
Valoarea Hashtable la 105: valoarea nu a fost găsită
După eliminarea (102), Tabelul Hash: {104 = Albastru, 103 = Maro, 101 = Verde, 100 = Roșu}
Tabel Hash actualizat: {104 = Albastru, 103 = Maro, 102 = Portocaliu, 101 = Verde, 100 = Roșu}
HashTable Exemplu Java
În acest program, definim un hashtable cu cheile ca nume ale titularului de cont, cu soldurile conturilor respective ca valori. Mai întâi, preluăm cheile din HashTable ca enumerare. Apoi, folosind această enumerare, imprimăm perechile cheie-valoare din HashTable.
Ulterior, actualizăm soldul contului unuia dintre titulari și imprimăm suma actualizată.
Programul prezentat mai jos prezintă această implementare.
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')); } }
Ieșire:
Soldul contului Hashtable:
VALOARE CHEIE
Iacov 78,48
Ben 95,43
Dillon 499.22
Crin 4367,34
Lacy 1200.0
Soldul noului cont al lui Ben: 1095,43
Hashtable Vs Hashmap
HashTable | HashMap |
---|---|
HashTable se execută lent. | HashMap este mai rapid. |
Moștenește clasa dicționar | Moștenește clasa AbstractMap. |
Este o clasă de moștenire. | Clasa HashMap introdusă în JDK 1.2 |
Sincronizat și sigur pentru fire. | Nesincronizat și fără fir. |
Este sincronizat intern și nu poate fi anulat. | Poate fi sincronizat folosind metoda Collections.synchronizedMap. |
Nu este permisă nicio cheie / valoare nulă. | Permite cheie nulă și mai multe valori nule. |
Poate fi parcurs folosind Enumerator și Iterator. | Poate fi parcurs doar folosind Iterator. |
întrebări frecvente
Q # 1) Ce este Hashtable în Java?
Răspuns: Este o clasă moștenită care moștenește clasa „dicționar” și stochează perechi cheie-valoare.
Q # 2) De ce se folosește Hashtable?
Răspuns: Este folosit pentru a stoca perechi cheie-valoare. Deci, atunci când trebuie să stocăm perechile cheie-valoare în format tabelar, mergem pentru HashTable. În al doilea rând, poate stoca mai multe valori pentru aceeași cheie folosind cupe. Recuperarea datelor este eficientă în HashTables.
Q # 3)Cum creați un Hashtable în Java?
Răspuns: Puteți să-l creați instanțând un obiect din clasa java.util.HashTable.
HashTable hashTable = new HashTable();
Afirmația de mai sus creează un HashTable numit „hashTable” cu chei și valori de tip String.
Q # 4) Hashtable este sigur pentru fire?
Răspuns: Da, este sigur pentru fire. În cazul în care siguranța firului nu este necesară, atunci putem opta pentru HashMap.
Q # 5) Cum funcționează Hashtable intern în Java cu un exemplu?
Răspuns: Intern stochează perechi cheie-valoare într-o structură numită găleți. Poziția cupei este determinată de hashCode-ul cheii. Funcția hash obține locația bucket folosind hashCode-ul cheii.
Concluzie
HashTable constă în date stocate sub formă de perechi cheie-valoare. Cheile sau valorile nu pot fi nule. În Java, este implementat folosind clasa HashTable.
Am văzut constructorii și metodele furnizate de clasa HashTable împreună cu implementarea HashTable în limbajul Java.
În viitorul nostru tutorial, vom discuta despre colecția HashMap.
youtube video downloader pentru pc descărcare gratuită
=> Vizitați aici pentru seria exclusivă de instruire Java.
Lectură recomandată
- Tutorial de reflecție Java cu exemple
- Tutorial de clasă Java Scanner cu exemple
- Noțiuni de bază Java: Sintaxă Java, Java Class și Core Java Concepts
- Ce este Java Vector | Tutorial Java Vector Class cu exemple
- Tutorial Java SWING: Container, componente și gestionarea evenimentelor
- Tutorial Java Array Class - java.util.Arrays Class cu exemple
- Tutorial JAVA pentru începători: peste 100 de tutoriale video Java practice
- Șirul Java conține () Tutorial metodă cu exemple