what is java hashtable hashtable implementation example
Ovaj vodič objašnjava što je Java HashTable, konstruktori i metode klase Hashtable, implementacija i Hashtable u odnosu na Hashmap:
Što je HashTable?
Hashtable u Javi niz je elemenata koji su popisi. Svaki od ovih popisa naziva se a kanta .
Ključeve preslikava na vrijednosti. U Javi hash tablicu implementira klasa ‘HashTable’. Ova klasa implementira sučelje mape i nasljeđuje klasu rječnika.
=> Ovdje pogledajte Savršeni vodič za Java obuku.
Neke jedinstvene karakteristike Hashtablea u Javi su sljedeće:
- To je niz koji kao svoje elemente sadrži popise ili segmente.
- Ima jedinstvene elemente.
- U Hashtable-u nema null ključa ili null vrijednosti.
- Sličan je Hashmapu, ali je sinkroniziran.
Što ćete naučiti:
Razred HashTable u Javi
U Javi je ova klasa član paketa java.util. Stoga u naš program moramo uključiti jednu od sljedećih izjava da bismo uključili funkcionalnost klase HashTable.
uvoz java.util. *;
ILI
import java.util.HashTable;
Opća deklaracija klase za klasu java.util.HashTable data je u nastavku:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
Ovdje,
- K => vrsta tipki HashTable-a
- V => vrsta mapiranih vrijednosti
API klase HashTable sastoji se od konstruktora koji se koriste za konstrukciju objekata klase i različitih operacija ili metoda koje su dio klase što dovodi do nesmetanog funkcioniranja klase HashTable.
Konstruktori klase HashTable
Prototip konstruktora | Opis | |
---|---|---|
Postavi | Postavi | Vraća postavljeni prikaz preslikavanja sadržanih na karti. |
Tablica raspršivanja () | Zadani konstruktor: stvara objekt klase HashTable s početnim zadanim kapacitetom i faktorom opterećenja. | |
Tablica raspršivanja (int kapacitet) | Stvara tablicu raspršivanja s navedenim početnim kapacitetom. | |
Tablica raspršivanja (unutarnji kapacitet, plutajući faktor) | Stvara objekt hash tablice s početnim kapacitetom = kapacitetom i faktorom opterećenja = loadFactor. | |
Hashtable (karta t) | Stvara novu hashTable iz dane mape navedene kao argument. |
Metode klase HashTable
Metoda | Prototip metode | Opis |
---|---|---|
čisto | void clear () | Briše HashTable resetiranjem vrijednosti. |
klon | Klon objekta () | Izrađuje plitku kopiju objekta HashTable i vraća ga. |
izračunati | V izračunavanje (tipka K, BiFunction remappingFunction) | Izračunava mapiranje između zadanog ključa i vrijednosti pomoću funkcije remapiranja. |
computeIfAbsent | V computeIfAbsent (tipka K, preslikavanje funkcije Funkcija) | Izračunava mapiranje između zadanog ključa i vrijednosti pomoću funkcije ponovnog mapiranja ako navedeni ključ već nije povezan s danom vrijednošću. |
computeIfPresent | V computeIfPresent (tipka K, BiFunction remappingFunction) | Ako je zadani ključ prisutan, funkcija preslikavanja koristi se za izračunavanje novog mapiranja između datog ključa i vrijednosti. |
elementi | Elementi nabrajanja () | Vraća nabrajanje vrijednosti u hash tablici. |
jednako | boolean jednako (Objekt o) | Uspoređuje zadani objekt s HashTable-om. |
za svakoga | void forEach (BiConsumer akcija) | Data se radnja izvodi za svaki od elemenata HashTablea dok se svi elementi ne iscrpe. |
getOrDefault | V getOrDefault (Tipka objekta, V defaultValue) | Vraća vrijednost na koju se mapira navedeni ključ ili defaultValue ako karta ne sadrži mapiranje za ključ. |
hashCode | int hashCode () | Vraća hash kod HashTable-a. |
tipke | Tipke za brojanje () | Vraća ključeve u hash tablici kao nabrajanje. |
keySet | Postavi keySet () | Vraća skup ključeva (tipke u kompletu) za tablicu raspršivanja. |
ići | Spajanje V (tipka K, V vrijednost, BiFunction remappingFunction) | Mapira dani ključ s ne-null vrijednošću pomoću funkcije preslikavanja ako ključ već nije prisutan ili je null. |
staviti | V put (tipka K, vrijednost V) | U HashTable ubacuje novi par ključ / vrijednost. |
staviSve | void putAll (karta t)) | Stavlja ili kopira parove ključ / vrijednost dane karte u HashTable. |
putIfAbsent | V putIfAbsent (K ključ, V vrijednost) | Dodijeljeni ključ pridružuje null vrijednosti ako ključ već nije prisutan ili je povezan s nulom. |
ukloniti | logičko uklanjanje (ključ objekta, vrijednost objekta) | Briše zadani par ključ / vrijednost iz HashTable-a. |
zamijeniti | V zamjena (tipka K, vrijednost V) | Vrijednost datog ključa zamjenjuje navedenom vrijednošću. |
zamijeniti | logička zamjena (tipka K, V oldValue, V newValue) | Zamjenjuje staru vrijednost datog ključa novom vrijednošću. |
zamjeni sve | void replaceAll (funkcija BiFunction) | Svi unosi u tablici raspršivanja zamjenjuju se vrijednošću koja se dobiva procjenom zadane funkcije. |
toString | String toString () | Pretvara objekt HashTable u njegov nizni prikaz. |
vrijednosti | Vrijednosti zbirke () | Vraća vrijednosti u HashTable-u kao zbirku. |
sadrži | boolean sadrži (vrijednost objekta) | Provjerava je li zadana vrijednost prisutna u tablici raspršivanja. Vraća true ako je present else vraća false. |
sadrži vrijednost | boolean containsValue (vrijednost objekta) | Provjerava postoji li vrijednost jednaka datoj vrijednosti u HashTableu i vraća li true. |
sadržiKljuč | boolean containsKey (ključ objekta) | Provjerava postoji li u HashTableu bilo koji ključ jednak danom ključu i vraća true ako da. |
prazno je | logički isEmpty () | Provjerava je li zadana HashTable prazna i vraća li true ako da. |
ponoviti | zaštićeno ponavljanje praznine () | Koristi se za povećanje veličine hash tablice i ponovno oblikovanje svih njezinih tipki. |
dobiti | V get (tipka objekta) | Dohvaća vrijednost za zadani ključ. |
ukloniti | V uklanjanje (tipka objekta) | Briše zadani ključ i vrijednost i vraća ovu vrijednost. |
veličina | veličina int () | Vraća veličinu ili broj elemenata prisutnih u tablici raspršivanja. |
Implementacija HashTable-a
Slijedi implementacija klase u Javi. Ovdje smo pokazali sve važne metode koje pruža razred.
mobitel špijunska aplikacija za android
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); } }
Izlaz:
Sadržaj tablice Hashtable:
104: Plava
103: Smeđa
102: Narančasta
101: Zelena
100: Mreža
Vrijednost raspršivanja na 101: zeleno
Vrijednost hashtable-a na 105: Vrijednost nije pronađena
Nakon uklanjanja (102), tablica raspršivanja: {104 = plava, 103 = smeđa, 101 = zelena, 100 = crvena}
Ažurirana tablica raspršivanja: {104 = plava, 103 = smeđa, 102 = narančasta, 101 = zelena, 100 = crvena}
Primjer Java HashTable-a
U ovom programu definiramo tablicu raspršivanja s ključevima kao imena vlasnika računa, a njihova stanja na računu kao vrijednosti. Prvo dohvaćamo ključeve iz HashTable-a kao nabrajanje. Zatim pomoću ovog nabrajanja ispisujemo parove ključ / vrijednost iz tablice HashTable.
Kasnije ažuriramo stanje na računu jednog od vlasnika i ispisujemo ažurirani iznos.
Program naveden u nastavku prikazuje ovu provedbu.
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')); } }
Izlaz:
Tabela stanja računa na računu:
KLJUČNA VRIJEDNOST
Jakov 78,48
Ben 95,43
Dillon 499,22
Ljiljan 4367.34
Čipkasti 1200,0
Benovo novo stanje na računu: 1095,43
top world of warcraft privatni poslužitelj
Hashtable vs Hashmap
HashTable | HashMap |
---|---|
HashTable se sporo izvršava. | HashMap je brži. |
Nasljeđuje razred rječnika. | Nasljeđuje klasu AbstractMap. |
Je naslijeđena klasa. | Klasa HashMap predstavljena u JDK 1.2 |
Sinkronizirano i bez niti. | Nesinkronizirano i sigurno bez niti. |
Interno se sinkronizira i ne može se poništiti. | Može se sinkronizirati metodom Collections.synchronizedMap. |
Nije dopušten null ključ / vrijednost. | Omogućuje null ključ i višestruke null vrijednosti. |
Može se preći pomoću Enumeratora i Iteratora. | Može se prijeći samo pomoću Iteratora. |
Često postavljana pitanja
P # 1) Što je Hashtable u Javi?
Odgovor: To je naslijeđena klasa koja nasljeđuje klasu 'rječnik' i pohranjuje parove ključ / vrijednost.
P # 2) Zašto se koristi Hashtable?
Odgovor: Koristi se za spremanje parova ključ / vrijednost. Dakle, kada moramo pohraniti parove ključ / vrijednost u tabelarni format, idemo na HashTable. Drugo, može pohraniti više vrijednosti za isti ključ pomoću segmenata. Dohvat podataka je učinkovit u HashTables.
3. pitanje)Kako stvoriti Hashtable na Javi?
Odgovor: Možete ga stvoriti instanciranjem objekta klase java.util.HashTable.
HashTable hashTable = new HashTable();
Gornja izjava stvara HashTable pod nazivom 'hashTable' s tipkama i vrijednostima tipa String.
P # 4) Je li Hashtable siguran za nit?
Odgovor: Da, siguran je u nitima. U slučaju da sigurnost niti nije potrebna, tada se možemo odlučiti za HashMap.
5. pitanje) Kako Hashtable interno radi na Javi s primjerom?
Odgovor: Interno pohranjuje parove ključ / vrijednost u strukturi koja se naziva segmenti. Položaj segmenta određuje se hashCode ključa. Hash funkcija dobiva mjesto segmenta pomoću hashCodea ključa.
Zaključak
HashTable se sastoji od podataka pohranjenih u obliku parova ključ / vrijednost. Ključevi ili vrijednosti ne mogu biti nule. U Javi se implementira pomoću klase HashTable.
Vidjeli smo konstruktore i metode koje pruža klasa HashTable zajedno s implementacijom HashTable u Java jeziku.
U našem nadolazećem uputstvu razgovarat ćemo o kolekciji HashMap.
=> Posjetite ovdje za ekskluzivnu seriju udžbenika za Java.
Preporučena literatura
- Java Vodič za refleksiju s primjerima
- Vodič za razred Java Scannera s primjerima
- Osnove Java-a: Java sintaksa, Java Class i osnovni Java koncepti
- Što je Java Vector | Vodič za Java Vector Class s primjerima
- Java SWING Vodič: Spremnici, komponente i upravljanje događajima
- Java Array Class Tutorial - java.util.Arrays Class s primjerima
- JAVA Tutorial za početnike: 100+ praktičnih Java Video tutorijala
- Java String sadrži () Vodič za metode s primjerima