what is java hashtable hashtable implementation example
Ta vadnica pojasnjuje, kaj je Java HashTable, konstruktorji in metode razreda Hashtable, implementacije in Hashtable v primerjavi s Hashmap:
Kaj je HashTable?
Hashtable v Javi je vrsta elementov, ki so seznami. Vsak od teh seznamov se imenuje a vedro .
Ključe preslika v vrednosti. V Javi razpršeno tabelo izvaja razred ‘HashTable’. Ta razred izvaja vmesnik zemljevida in podeduje slovarski razred.
=> Tukaj si oglejte Perfect Guide Training Guide.
Nekatere edinstvene značilnosti Hashtable v Javi so naslednje:
- Je matrika, ki kot elemente vsebuje sezname ali segmente.
- Ima edinstvene elemente.
- V Hashtable ni ničelnega ključa ali nične vrednosti.
- Podoben je Hashmapu, vendar je sinhroniziran.
Kaj se boste naučili:
Razred HashTable v Javi
V Javi je ta razred član paketa java.util. Tako moramo v svoj program vključiti enega od naslednjih izjav, da vključimo funkcionalnost razreda HashTable.
uvoz java.util. *;
ALI
import java.util.HashTable;
Spodaj je navedena splošna izjava razreda za razred java.util.HashTable:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
Tukaj,
- K => vrsta tipk HashTable
- V => vrsta preslikanih vrednosti
API razreda HashTable je sestavljen iz konstruktorjev, ki se uporabljajo za konstruiranje predmetov razreda in različnih operacij ali metod, ki so del razreda, kar omogoča nemoteno delovanje razreda HashTable.
Konstruktorji razreda HashTable
Prototip konstruktorja | Opis | |
---|---|---|
Nastavite | Nastavite | Vrne nastavljeni pogled preslikav, vsebovanih na zemljevidu. |
Hashtable () | Privzeti konstruktor: ustvari objekt razreda HashTable z začetno privzeto zmogljivostjo in faktorjem obremenitve. | |
Hashtable (notranja zmogljivost) | Ustvari razpršilno tabelo z določeno začetno zmogljivostjo. | |
Tabela razpršitve (notranja zmogljivost, faktor plavajoče obremenitve) | Ustvari objekt razpršene tabele z začetno zmogljivostjo = zmogljivostjo in faktorjem obremenitve = loadFactor. | |
Hashtable (Zemljevid t) | Ustvari novo hashTable iz danega zemljevida, navedenega kot argument. |
Metode razreda HashTable
Metoda | Prototip metode | Opis |
---|---|---|
jasno | prazno jasno () | Počisti HashTable s ponastavitvijo vrednosti. |
klon | Klon predmeta () | Naredi plitvo kopijo predmeta HashTable in jo vrne. |
izračunati | V izračun (tipka K, BiFunction remappingFunction) | Izračuna preslikavo med danim ključem in vrednostjo s pomočjo funkcije preslikave. |
computeIfAbsent | V computeIfAbsent (tipka K, preslikava funkcijFunction) | Izračuna preslikavo med danim ključem in vrednostjo s pomočjo funkcije preslikave, če navedeni ključ še ni povezan z dano vrednostjo. |
computeIfPresent | V computeIfPresent (tipka K, BiFunction remappingFunction) | Če je dani ključ prisoten, se funkcija preslikave uporablja za izračun novega preslikave med danim ključem in vrednostjo. |
elementi | Elementi štetja () | Vrne oštevilčenje vrednosti v razpršeni tabeli. |
enako | logično enako (objekt o) | Dani objekt primerja s HashTable. |
za vsakogar | void forEach (BiConsumer action) | Dano dejanje se izvaja za vsak element HashTable, dokler niso vsi elementi izčrpani. |
getOrDefault | V getOrDefault (Tipka predmeta, V defaultValue) | Vrne vrednost, na katero je preslikan podani ključ, ali defaultValue, če zemljevid ne vsebuje preslikave ključa. |
hashCode | int hashCode () | Vrne hash kodo HashTable. |
tipke | Številske tipke () | Vrne ključe v HashTable kot oštevilčenje. |
keySet | Nastavi keySet () | Vrne nabor tipk (ključi v kompletu) za HashTable. |
pojdi | V spajanje (tipka K, vrednost V, BiFunction remappingFunction) | Preslika dani ključ z ne-null vrednostjo s funkcijo ponovnega preslikavanja, če ključ še ni prisoten ali ničen. |
dal | V pot (tipka K, vrednost V) | V HashTable vstavi nov par ključ-vrednost. |
putAll | void putAll (Zemljevid t)) | V HashTable postavi ali kopira pare ključ / vrednost danega zemljevida. |
putIfAbsent | V putIfAbsent (tipka K, vrednost V) | Dani ključ poveže z vrednostjo null, če ključ še ni prisoten ali je povezan z vrednostjo null. |
Odstrani | logično odstranjevanje (tipka predmeta, vrednost predmeta) | Izbriše dani par ključ-vrednost iz tabele HashTable. |
zamenjati | V zamenjava (tipka K, vrednost V) | Vrednost danega ključa nadomesti z določeno vrednostjo. |
zamenjati | logična zamenjava (tipka K, V oldValue, V newValue) | Nadomešča staro vrednost danega ključa z novo vrednostjo. |
replaceAll | void replaceAll (funkcija BiFunction) | Vsi vnosi v HashTable se nadomestijo z vrednostjo, ki je pridobljena z oceno dane funkcije. |
toString | String toString () | Pretvori objekt HashTable v njegovo nizno predstavitev. |
vrednote | Vrednosti zbirke () | Vrne vrednosti v HashTable kot zbirka. |
vsebuje | boolean vsebuje (vrednost predmeta) | Preveri, ali je dana vrednost v HashTable. Vrne true, če je prisotno drugače, vrne false. |
vsebuje vrednost | boolean containsValue (vrednost predmeta) | Preveri, ali je v HashTable vrednost, ki je enaka dani vrednosti, in vrne true. |
vsebujeKljuč | boolean containsKey (tipka predmeta) | Preveri, ali je v HashTable katerikoli ključ, ki je enak določenemu ključu, in vrne true, če da. |
je prazno | logična isEmpty () | Preveri, ali je podana tabela HashTable prazna, in vrne true, če je odgovor da. |
ponovi | zaščiteno ponovitev praznine () | Uporablja se za povečanje velikosti zgoščevalne tabele in preoblikuje vse njene tipke. |
dobili | V get (tipka predmeta) | Pridobi vrednost za dani ključ. |
Odstrani | V odstrani (predmetna tipka) | Izbriše dani ključ in vrednost in vrne to vrednost. |
velikost | velikost int () | Vrne velikost ali število elementov, ki so prisotni v tabeli HashTable. |
Izvajanje HashTable
Spodaj je navedena izvedba razreda v Javi. Tu smo prikazali vse pomembne metode, ki jih ponuja razred.
vprašanja in odgovori za razgovore za razvijalce jave
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); } }
Izhod:
Vsebina Hashtable:
104: Modra
103: Rjava
102: Oranžna
101: Zelena
100: Omrežje
Vrednost Hashtable pri 101: zelena
Vrednost tabele z vrednostmi 105: vrednosti ni mogoče najti
Po odstranitvi (102) se razpredelnica razprši: {104 = modra, 103 = rjava, 101 = zelena, 100 = rdeča}
Posodobljena razpredelnica: {104 = modra, 103 = rjava, 102 = oranžna, 101 = zelena, 100 = rdeča}
Primer HashTable Java
V tem programu definiramo zgoščevalno tabelo s ključi kot imena imetnikov računov, njihova stanja na računu pa kot vrednosti. Najprej ključe pridobimo iz tabele HashTable kot naštevanje. Nato s pomočjo tega naštevanja iz HashTable natisnemo pare ključ / vrednost.
Kasneje posodobimo stanje na računu enega od imetnikov in posodobljeni znesek natisnemo.
Spodnji program prikazuje to izvedbo.
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')); } }
Izhod:
Tabela stanja na računu:
KLJUČNA VREDNOST
Jakob 78,48
Ben 95,43
Dillon 499,22
Lilija 4367.34
Čipkast 1200,0
Benovo novo stanje na računu: 1095,43
Hashtable Vs Hashmap
HashTable | HashMap |
---|---|
HashTable se počasi izvaja. | HashMap je hitrejši. |
Podeduje razred slovarja. | Podeduje razred AbstractMap. |
Je zapuščinski razred. | Razred HashMap, predstavljen v JDK 1.2 |
Sinhronizirano in varno pred nitmi. | Nesinhronizirano in varno pred nitmi. |
Sinhronizira se interno in je ni mogoče razveljaviti. | Lahko se sinhronizira z uporabo metode Collections.synchronizedMap. |
Ni dovoljen noben ključ / vrednost. | Omogoča ničelne ključe in več ničelnih vrednosti. |
Prehod je mogoč s pomočjo Enumeratorja in Iteratorja. | Prehod je mogoč le z uporabo Iteratorja. |
Pogosto zastavljena vprašanja
V # 1) Kaj je Hashtable v Javi?
Odgovor: Je starejši razred, ki podeduje razred 'slovar' in shranjuje pare ključ-vrednost.
Q # 2) Zakaj se uporablja Hashtable?
Odgovor: Uporablja se za shranjevanje parov ključ / vrednost. Torej, ko moramo pare ključ-vrednost shraniti v tabelarni obliki, gremo za HashTable. Drugič, v isti segment lahko shrani več vrednosti za isti ključ. Pridobivanje podatkov je učinkovito v HashTables.
Q # 3)Kako ustvarim Hashtable v Javi?
Odgovor: Ustvarite ga lahko s primerkom predmeta razreda java.util.HashTable.
HashTable hashTable = new HashTable();
Zgornji stavek ustvari HashTable z imenom 'hashTable' s tipkami in vrednostmi tipa String.
Q # 4) Je Hashtable varno z nitmi?
Odgovor: Da, varno je pred nitmi. Če varnost niti ni potrebna, se lahko odločimo za HashMap.
V # 5) Kako Hashtable deluje z notranjim primerom v Javi?
Odgovor: Interno shranjuje pare ključ / vrednost v strukturi, imenovani segmenti. Položaj vedra določa hashCode ključa. Funkcija razpršitve dobi lokacijo segmenta s pomočjo hashCode ključa.
Zaključek
HashTable je sestavljen iz podatkov, shranjenih v obliki parov ključ-vrednost. Tipke ali vrednosti ne smejo biti nič. V Javi se izvaja z uporabo razreda HashTable.
Videli smo konstruktorje in metode, ki jih ponuja razred HashTable, skupaj z izvajanjem HashTable v jeziku Java.
V naši prihajajoči vadnici bomo razpravljali o zbirki HashMap.
kako odpreti datoteko .dat
=> Obiščite tukaj za ekskluzivno serijo vadnic za učenje Java.
Priporočeno branje
- Vadnica za refleksijo Java s primeri
- Vadnica razreda Java Scanner Class z primeri
- Osnove Java: Sintaksa Java, Razred Java in Osnovni koncepti Java
- Kaj je Java Vector | Vadnica Java Vector Class s primeri
- Java SWING Vadnica: Vsebnik, komponente in obdelava dogodkov
- Vadnica razreda Java Array - java.util.Arrays Class z primeri
- JAVA Vadnica za začetnike: 100+ praktičnih Javnih video vadnic
- Java String vsebuje () Vadnico metode s primeri