what is java hashtable hashtable implementation example
Tento výukový program vysvětluje, co je Java HashTable, konstruktory a metody třídy Hashtable, implementace a Hashtable vs Hashmap:
Co je HashTable?
Hashtable v Javě je pole prvků, které jsou seznamy. Každý z těchto seznamů se nazývá a Kbelík .
Mapuje klíče k hodnotám. V Javě je hash tabulka implementována třídou „HashTable“. Tato třída implementuje mapové rozhraní a dědí třídu slovníku.
=> Podívejte se na průvodce Perfect Java Training Guide zde.
Některé jedinečné vlastnosti Hashtable v Javě jsou následující:
- Jedná se o pole, které jako seznam obsahuje seznamy nebo segmenty.
- Má jedinečné prvky.
- V Hashtable není žádný nulový klíč ani nulová hodnota.
- Je to podobné jako Hashmap, ale je synchronizováno.
Co se naučíte:
Třída HashTable v Javě
V Javě je tato třída členem balíčku java.util. Proto musíme do našeho programu zahrnout jeden z následujících příkazů, aby zahrnoval funkčnost třídy HashTable.
import java.util. *;
NEBO
import java.util.HashTable;
Níže je uvedena obecná deklarace třídy pro třídu java.util.HashTable:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
Tady,
- K => typ klíčů HashTable
- V => typ mapovaných hodnot
Rozhraní API třídy HashTable se skládá z konstruktorů, které se používají ke konstrukci objektů třídy, a různých operací nebo metod, které jsou součástí třídy, která přináší hladké fungování třídy HashTable.
Konstruktory třídy HashTable
Prototyp konstruktoru | Popis | |
---|---|---|
Soubor | Soubor | Vrátí zobrazení sady mapování obsažených v mapě. |
Hashtable () | Výchozí konstruktor: vytvoří objekt třídy HashTable s počáteční výchozí kapacitou a faktorem zatížení. | |
Hashtable (int kapacita) | Vytvoří tabulku hash se zadanou počáteční kapacitou. | |
Hashtable (int kapacita, float loadFactor) | Vytvoří objekt tabulky hash s počáteční kapacitou = kapacita a faktorem zatížení = loadFactor. | |
Hashtable (mapa t) | Vytvoří novou hashTable z dané mapy zadané jako argument. |
Metody třídy HashTable
Metoda | Metoda Prototyp | Popis |
---|---|---|
Průhledná | prázdnota clear () | Vymaže HashTable resetováním hodnot. |
klon | Klon objektu () | Vytvoří mělkou kopii objektu HashTable a vrátí jej. |
vypočítat | Výpočet V (klávesa K, funkce BiFunkce přemapování) | Vypočítá mapování mezi daným klíčem a hodnotou pomocí funkce přemapování. |
computeIfAbsent | V computeIfAbsent (klávesa K, funkce mapování funkcí) | Vypočítá mapování mezi daným klíčem a hodnotou pomocí funkce přemapování, pokud zadaný klíč již není přidružen k dané hodnotě. |
computeIfPresent | V computeIfPresent (klávesa K, BiFunction remappingFunction) | Pokud je daný klíč přítomen, funkce přemapování se používá k výpočtu nového mapování mezi daným klíčem a hodnotou. |
elementy | Prvky výčtu () | Vrátí výčet hodnot v hash tabulce. |
rovná se | boolean se rovná (objekt o) | Porovná daný objekt s HashTable. |
pro každého | void forEach (BiConsumer action) | Daná akce se provádí pro každý z prvků HashTable, dokud nejsou vyčerpány všechny prvky. |
getOrDefault | V getOrDefault (klíč objektu, V defaultValue) | Vrátí hodnotu, na kterou je zadaný klíč mapován, nebo defaultValue, pokud mapa neobsahuje žádné mapování pro klíč. |
hashCode | int hashCode () | Vrátí hash kód HashTable. |
klíče | Výčtové klíče () | Vrátí klíče v HashTable jako výčet. |
keySet | Set keySet () | Vrátí sadu klíčů (klíče jako sadu) pro HashTable. |
jít | Sloučení V (klávesa K, hodnota V, funkce BiFunkce přemapování) | Mapuje daný klíč s nenulovou hodnotou pomocí funkce přemapování, pokud klíč již není přítomen nebo null. |
dát | V put (klíč K, hodnota V) | Vloží nový pár klíč – hodnota do tabulky HashTable. |
putAll | void putAll (mapa t)) | Vloží nebo zkopíruje páry klíč – hodnota dané mapy do HashTable. |
putIfAbsent | V putIfAbsent (klíč K, hodnota V) | Přidruží daný klíč k hodnotě null, pokud klíč již není přítomen nebo asociován s hodnotou null. |
odstranit | boolean remove (klíč objektu, hodnota objektu) | Odstraní daný pár klíč – hodnota z HashTable. |
nahradit | V nahradit (klávesa K, hodnota V) | Nahradí hodnotu daného klíče zadanou hodnotou. |
nahradit | boolean replace (klíč K, V oldValue, V newValue) | Nahradí starou hodnotu daného klíče novou hodnotou. |
vyměnit vše | void replaceAll (funkce BiFunction) | Všechny položky v HashTable jsou nahrazeny hodnotou, která je získána z vyhodnocení dané funkce. |
toString | String toString () | Převede objekt HashTable na jeho řetězcovou reprezentaci. |
hodnoty | Hodnoty kolekce () | Vrátí hodnoty v HashTable jako kolekci. |
obsahuje | boolean obsahuje (hodnota objektu) | Zkontroluje, zda je daná hodnota v HashTable. Vrátí true, pokud present else vrátí false. |
obsahuje hodnotu | boolean containsValue (hodnota objektu) | Zkontroluje, zda je v HashTable hodnota rovna dané hodnotě a vrátí hodnotu true. |
containsKey | boolean containsKey (klíč objektu) | Zkontroluje, zda je v HashTable nějaký klíč rovný danému klíči, a vrátí hodnotu true, pokud ano. |
je prázdný | boolean isEmpty () | Zkontroluje, zda je daná HashTable prázdná, a vrátí hodnotu true, pokud ano. |
omýt | chráněné vyprázdnění prázdnoty () | Používá se ke zvětšení velikosti hashovací tabulky a opětovné mytí všech jejích klíčů. |
dostat | V get (klíč objektu) | Načte hodnotu pro daný klíč. |
odstranit | V remove (klíč objektu) | Odstraní daný klíč a hodnotu a vrátí tuto hodnotu. |
velikost | int velikost () | Vrátí velikost nebo počet prvků obsažených v HashTable. |
Implementace HashTable
Níže je uvedena implementace třídy v Javě. Zde jsme prokázali všechny důležité metody poskytované třídou.
funkce třídění bublin c ++
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ýstup:
Obsah Hashtable:
104: Modrá
103: Hnědá
102: Oranžová
101: Zelená
100: Síť
Hodnota hashtable na 101: Zelená
Hodnota hashable na 105: Hodnota nebyla nalezena
Po odebrání (102) se tabulka hash: {104 = modrá, 103 = hnědá, 101 = zelená, 100 = červená}
Aktualizovaná tabulka hash: {104 = modrá, 103 = hnědá, 102 = oranžová, 101 = zelená, 100 = červená}
Příklad Java HashTable
V tomto programu definujeme hashtable s klíči jako jména majitelů účtů s jejich příslušnými zůstatky účtů jako hodnotami. Nejprve načteme klíče z HashTable jako výčet. Pak pomocí tohoto výčtu vytiskneme páry klíč – hodnota z HashTable.
Později aktualizujeme zůstatek na účtu jednoho z držitelů a vytiskneme aktualizovanou částku.
Níže uvedený program ukazuje tuto implementaci.
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ýstup:
Hashtable zůstatku účtu:
KLÍČOVÁ HODNOTA
James 78,48
Ben 95,43
Dillon 499,22
Lily 4367,34
Krajkové 1200.0
Benův nový zůstatek na účtu: 1095,43
Hashtable Vs Hashmap
HashTable | HashMap |
---|---|
HashTable se provádí pomalu. | HashMap je rychlejší. |
Zdědí třídu slovníku. | Zdědí třídu AbstractMap. |
Je starší třída. | Třída HashMap představená v JDK 1.2 |
Synchronizované a bezpečné pro vlákna. | Nesynchronizované a bezpečné pro vlákna. |
Je interně synchronizován a nelze jej vrátit zpět. | Lze jej synchronizovat pomocí metody Collections.synchronizedMap. |
Není povolen žádný nulový klíč / hodnota. | Umožňuje null klíč a více hodnot null. |
Lze je procházet pomocí Enumerator a Iterator. | Lze procházet pouze pomocí Iterátoru. |
Často kladené otázky
Otázka 1) Co je Hashtable v Javě?
Odpovědět: Jedná se o starší třídu, která dědí třídu „slovník“ a ukládá páry klíč – hodnota.
Otázka č. 2) Proč se používá Hashtable?
Odpovědět: Používá se k ukládání párů klíč – hodnota. Takže když potřebujeme uložit páry klíč – hodnota v tabulkovém formátu, jdeme na HashTable. Za druhé, může ukládat více hodnot pro stejný klíč pomocí segmentů. Načítání dat je v HashTables efektivní.
Otázka č. 3)Jak vytvoříte Hashtable v Javě?
Odpovědět: Můžete jej vytvořit vytvořením instance objektu třídy java.util.HashTable.
HashTable hashTable = new HashTable();
Výše uvedený příkaz vytvoří HashTable s názvem „hashTable“ s klávesami a hodnotami typu String.
Otázka č. 4) Je vlákno Hashtable bezpečné?
Odpovědět: Ano, je to bezpečné pro vlákna. V případě, že není nutná bezpečnost vláken, můžeme se rozhodnout pro HashMap.
Otázka č. 5) Jak Hashtable funguje interně v Javě s příkladem?
nejlepší bezplatný čistič registru pro Windows 10
Odpovědět: Interně ukládá páry klíč-hodnota ve struktuře zvané kbelíky. Poloha kbelíku je určena hashCode klíče. Funkce hash získá polohu segmentu pomocí hashCode klíče.
Závěr
HashTable se skládá z dat uložených ve formě párů klíč – hodnota. Klíče nebo hodnoty nemohou mít hodnotu null. V Javě se implementuje pomocí třídy HashTable.
Viděli jsme konstruktory a metody poskytované třídou HashTable spolu s implementací HashTable v jazyce Java.
V našem nadcházejícím kurzu budeme diskutovat o kolekci HashMap.
=> Navštivte zde exkluzivní sérii výukových programů Java.
Doporučené čtení
- Výukový program Java Reflection s příklady
- Výukový program třídy skeneru Java s příklady
- Základy jazyka Java: Java Syntax, třída Java a základní koncepty Java
- Co je Java Vector | Výukový program Java Vector Class s příklady
- Výukový program Java SWING: Kontejner, komponenty a zpracování událostí
- Výukový program třídy Java Array - třída java.util.Arrays s příklady
- Výukový program JAVA pro začátečníky: 100+ praktických výukových programů Java Video
- Java String obsahuje () Výukový program metod s příklady