what is java hashtable hashtable implementation example
Tento výukový program vysvetľuje, čo je Java HashTable, konštruktory a metódy triedy Hashtable, implementácia a Hashtable vs Hashmap:
Čo je HashTable?
Hashtable v Jave je pole prvkov, ktoré sú zoznamami. Každý z týchto zoznamov sa nazýva a vedro .
Mapuje kľúče k hodnotám. V jazyku Java je hash tabuľka implementovaná triedou „HashTable“. Táto trieda implementuje mapové rozhranie a dedí triedu slovníka.
=> Vyskúšajte Sprievodcu dokonalým školením Java tu.
Niektoré z jedinečných charakteristík Hashtable v Jave sú nasledujúce:
- Je to pole, ktoré ako svoje prvky obsahuje zoznamy alebo segmenty.
- Má jedinečné prvky.
- V tabuľke hash nie je žiadny nulový kľúč ani nulová hodnota.
- Je to podobné ako Hashmap, ale je synchronizované.
Čo sa dozviete:
Trieda HashTable v Jave
V Jave je táto trieda členom balíka java.util. Preto musíme do nášho programu zahrnúť jedno z nasledujúcich vyhlásení, aby sme zahrnuli funkčnosť triedy HashTable.
import java.util. *;
ALEBO
import java.util.HashTable;
Všeobecné vyhlásenie triedy pre triedu java.util.HashTable je uvedené nižšie:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
Tu,
- K => typ kľúčov tabuľky HashTable
- V => typ mapovaných hodnôt
Rozhranie API triedy HashTable sa skladá z konštruktorov, ktoré sa používajú na konštrukciu objektov triedy, a z rôznych operácií alebo metód, ktoré sú súčasťou triedy, ktorá umožňuje plynulé fungovanie triedy HashTable.
Konštruktéri triedy HashTable
Prototyp konštruktéra | Popis | |
---|---|---|
Nastaviť | Nastaviť | Vráti množinové zobrazenie máp obsiahnutých na mape. |
Hashtable () | Predvolený konštruktor: vytvorí objekt triedy HashTable s počiatočnou predvolenou kapacitou a faktorom zaťaženia. | |
Hashtable (int kapacita) | Vytvorí hashovaciu tabuľku so zadanou počiatočnou kapacitou. | |
Hashtable (int kapacita, float loadFactor) | Vytvorí objekt tabuľky hash s počiatočnou kapacitou = kapacita a faktorom zaťaženia = loadFactor. | |
Hashtable (mapa t) | Vytvorí novú hashTable z danej mapy určenej ako argument. |
Metódy triedy HashTable
Metóda | Metóda Prototyp | Popis |
---|---|---|
jasný | prázdne miesto jasné () | Vymaže HashTable resetovaním hodnôt. |
klon | Klon objektu () | Vytvorí plytkú kópiu objektu HashTable a vráti ho. |
vypočítať | Výpočet V (kláves K, BiFunction remappingFunction) | Vypočíta mapovanie medzi daným kľúčom a hodnotou pomocou funkcie premapovania. |
computeIfAbsent | V computeIfAbsent (kláves K, Function mappingFunction) | Vypočíta mapovanie medzi daným kľúčom a hodnotou pomocou funkcie premapovania, ak zadaný kľúč ešte nie je priradený k danej hodnote. |
computeIfPresent | V computeIfPresent (klávesa K, funkcia BiFunction remappingFunction) | Ak je daný kľúč prítomný, funkcia premapovania sa použije na výpočet nového mapovania medzi daným kľúčom a hodnotou. |
prvkov | Enumeračné prvky () | Vráti výčet hodnôt v hashovacej tabuľke. |
rovná sa | boolean equals (Objekt o) | Porovná daný objekt s HashTable. |
pre každý | void forEach (BiConsumer action) | Daná akcia sa vykonáva pre každý z prvkov HashTable, kým sa nevyčerpajú všetky prvky. |
getOrDefault | V getOrDefault (kľúč objektu, V defaultValue) | Vráti hodnotu, na ktorú je namapovaný zadaný kľúč, alebo defaultValue, ak mapa neobsahuje žiadne mapovanie pre kľúč. |
hashCode | int hashCode () | Vráti hašovací kód tabuľky HashTable. |
kľúče | Enumeračné kľúče () | Vráti kľúče v HashTable ako enumeráciu. |
keySet | Set keySet () | Vráti sadu kľúčov (sady ako klávesy) pre tabuľku HashTable. |
choď | Zlúčenie V (kláves K, hodnota V, BiFunction remappingFunction) | Mapuje daný kľúč s nenulovou hodnotou pomocou funkcie premapovania, ak kľúč ešte nie je prítomný alebo má hodnotu null. |
dať | V put (kľúč K, hodnota V) | Vloží nový pár kľúč - hodnota do tabuľky HashTable. |
putAll | void putAll (mapa t)) | Vloží alebo skopíruje páry kľúč - hodnota danej mapy do tabuľky HashTable. |
putIfAbsent | V putIfAbsent (kľúč K, hodnota V) | Priradí daný kľúč k hodnote null, ak kľúč ešte nie je prítomný alebo nie je priradený k hodnote null. |
odstrániť | boolean remove (kľúč objektu, hodnota objektu) | Odstráni daný pár kľúč - hodnota z tabuľky HashTable. |
vymeniť | Nahradiť V (kláves K, hodnota V) | Nahradí hodnotu daného kľúča zadanou hodnotou. |
vymeniť | boolovská zámena (kláves K, V oldValue, V newValue) | Nahradí starú hodnotu daného kľúča novou hodnotou. |
nahradiť všetko | void replaceAll (funkcia BiFunction) | Všetky položky v HashTable sa nahradia hodnotou, ktorá sa získa z vyhodnotenia danej funkcie. |
natiahnuť | String toString () | Skonvertuje objekt HashTable na jeho reťazcovú reprezentáciu. |
hodnoty | Hodnoty zbierky () | Vráti hodnoty v HashTable ako kolekciu. |
obsahuje | boolean obsahuje (hodnota objektu) | Skontroluje, či je daná hodnota v tabuľke hash. Vráti hodnotu true, ak je prítomný else, vráti hodnotu false. |
obsahuje hodnotu | boolean containsValue (hodnota objektu) | Skontroluje, či je v HashTable hodnota rovná danej hodnote a vráti hodnotu true. |
obsahujeKey | boolean containsKey (kľúč objektu) | Skontroluje, či je v HashTable nejaký kľúč rovný danému kľúču, a vráti hodnotu true, ak áno. |
je prázdny | boolean isEmpty () | Skontroluje, či je daná tabuľka HashTable prázdna, a vráti hodnotu true, ak áno. |
opätovne umyť | chránené vyprázdnenie dutiny () | Používa sa na zväčšenie veľkosti hašovacieho stola a opätovné vymytie všetkých jeho klávesov. |
dostať | V get (kľúč objektu) | Načíta hodnotu pre daný kľúč. |
odstrániť | V remove (kľúč objektu) | Vymaže daný kľúč a hodnotu a vráti túto hodnotu. |
veľkosť | veľkosť int () | Vráti veľkosť alebo počet prvkov v HashTable. |
Implementácia tabuľky HashTable
Ďalej je uvedená implementácia triedy v prostredí Java. Tu sme predviedli všetky dôležité metódy poskytované triedou.
čo je wifi bezpečnostný kľúč
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); } }
Výkon:
Obsah Hashtable:
104: Modrá
103: Hnedá
102: Oranžová
101: Zelená
100: Sieť
Hashtable hodnota na 101: zelená
Hodnota hashtable pri 105: Hodnota sa nenašla
Po odstránení (102) sa tabuľka hash: {104 = modrá, 103 = hnedá, 101 = zelená, 100 = červená}
Aktualizovaná tabuľka hash: {104 = modrá, 103 = hnedá, 102 = oranžová, 101 = zelená, 100 = červená}
Príklad Java HashTable
V tomto programe definujeme hashtable s kľúčmi ako mená majiteľov účtov s ich príslušnými zostatkami účtov ako hodnotami. Najskôr získame kľúče z HashTable ako zoznam. Potom pomocou tohto výčtu vytlačíme páry kľúč - hodnota z tabuľky HashTable.
Neskôr aktualizujeme zostatok na účte jedného z majiteľov a vytlačíme aktualizovanú sumu.
Program uvedený nižšie ukazuje túto implementáciu.
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')); } }
Výkon:
Hashtable zostatku na účte:
KĽÚČOVÁ HODNOTA
Jakub 78,48
Ben 95,43
Dillon 499,22
Lily 4367,34
Lacy 1200.0
Benov nový zostatok na účte: 1095,43
Hashtable Vs Hashmap
HashTable | HashMap |
---|---|
Spustenie tabuľky HashTable je pomalé. | HashMap je rýchlejší. |
Zdedí triedu slovníka. | Zdedí triedu AbstractMap. |
Je triedou dedičstva. | Trieda HashMap uvedená v JDK 1.2 |
Synchronizované a bezpečné pre vlákna. | Nesynchronizované a bezpečné bez vlákien. |
Je synchronizovaný interne a nemožno ho vrátiť späť. | Môže sa synchronizovať pomocou metódy Collections.synchronizedMap. |
Nie je povolený žiadny nulový kľúč / hodnota. | Umožňuje nulový kľúč a viacnásobné nulové hodnoty. |
Dá sa prechádzať pomocou Enumerátora a Iterátora. | Dá sa prechádzať iba pomocou Iterátora. |
často kladené otázky
Otázka 1) Čo je to Hashtable v Jave?
Odpoveď: Jedná sa o starú triedu, ktorá dedí triedu „slovník“ a ukladá páry kľúč - hodnota.
Otázka č. 2) Prečo sa používa Hashtable?
Odpoveď: Používa sa na ukladanie párov kľúč - hodnota. Takže keď potrebujeme uložiť páry kľúč - hodnota v tabuľkovom formáte, ideme na HashTable. Po druhé, pomocou segmentov môže ukladať viac hodnôt pre ten istý kľúč. Získavanie údajov je v HashTables efektívne.
Otázka č. 3)Ako vytvoríte Hashtable v Jave?
ako zobraziť súbor json
Odpoveď: Môžete ho vytvoriť vytvorením inštancie objektu triedy java.util.HashTable.
HashTable hashTable = new HashTable();
Vyššie uvedené vyhlásenie vytvorí HashTable s názvom „hashTable“ s klávesmi a hodnotami typu String.
Otázka č. 4) Je vlákno Hashtable bezpečné?
Odpoveď: Áno, je to bezpečné pre vlákna. V prípade, že bezpečnosť vlákien nie je požadovaná, môžeme sa rozhodnúť pre HashMap.
Otázka č. 5) Ako interne funguje Hashtable v Jave s príkladom?
Odpoveď: Interne ukladá páry kľúč - hodnota v štruktúre nazývanej segmenty. Pozícia vedra je určená hashCode kľúča. Funkcia hash získa polohu segmentu pomocou hashCode kľúča.
Záver
HashTable pozostáva z údajov uložených vo forme párov kľúč - hodnota. Kľúče alebo hodnoty nemôžu byť nulové. V Jave sa implementuje pomocou triedy HashTable.
Videli sme konštruktory a metódy poskytované triedou HashTable spolu s implementáciou HashTable v jazyku Java.
V našom pripravovanom výučbe sa budeme zaoberať zbierkou HashMap.
=> Navštívte tu sériu exkluzívnych výukových programov Java.
Odporúčané čítanie
- Výukový program Java Reflection s príkladmi
- Výukový program triedy skenerov Java s príkladmi
- Základy jazyka Java: Java Syntax, trieda Java a základné koncepty Java
- Čo je Java Vector | Výukový program Java Vector Class s príkladmi
- Výukový program Java SWING: Kontajnery, komponenty a spracovanie udalostí
- Výukový program triedy Java Array - java.util. Trieda polí s príkladmi
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video
- Java String obsahuje () Výukový program metód s príkladmi