what is java hashtable hashtable implementation example
Denna handledning förklarar vad som är en Java HashTable, konstruktörer och metoder för Hashtable Class, Implementation & Hashtable vs Hashmap:
Vad är en HashTable?
En Hashtable i Java är en rad element som är listor. Var och en av dessa listor kallas a hink .
Det mappar nycklarna till värden. I Java implementeras hashtabellen av klassen 'HashTable'. Denna klass implementerar kartgränssnittet och ärver ordboksklassen.
=> Kolla in den perfekta Java-träningsguiden här.
Några av de unika egenskaperna hos Hashtable i Java är följande:
- Det är en matris som innehåller listor eller hinkar som dess element.
- Den har unika inslag.
- Det finns ingen null-nyckel eller null-värde i Hashtable.
- Det liknar Hashmap men är synkroniserat.
Vad du kommer att lära dig:
HashTable-klass i Java
I Java är denna klass medlem i paketet java.util. Således måste vi inkludera ett av följande uttalanden i vårt program för att inkludera HashTable-klassfunktionalitet.
importera java.util. *;
ELLER
importera java.util.HashTable;
En allmän klassdeklaration för java.util.HashTable-klassen ges nedan:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
Här,
- K => typ av nycklar i HashTable
- V => mappade värden
HashTable-klass-API: et består av konstruktörer som används för att konstruera klassobjekten och de olika operationerna eller metoderna som ingår i klassen, vilket leder till att HashTable-klassen fungerar smidigt.
Konstruktörer av HashTable-klass
Konstruktör prototyp | Beskrivning | |
---|---|---|
Uppsättning | Uppsättning | Det returnerar en uppsättning vy av mappningarna som finns på kartan. |
Hashtable () | Standardkonstruktör: skapar ett HashTable-klassobjekt med initial standardkapacitet och belastningsfaktor. | |
Hashtable (int-kapacitet) | Skapar en hashtabell med angiven initial kapacitet. | |
Hashtable (int-kapacitet, float loadFactor) | Skapar ett hash-tabellobjekt med den initiala kapaciteten = kapacitet och belastningsfaktor = loadFactor. | |
Hashtable (karta t) | Skapar en ny hashTabell från den angivna kartan som anges som argument. |
Metoder för HashTable-klass
Metod | Metodprototyp | Beskrivning |
---|---|---|
klar | ogiltig rensa () | Rensar HashTable genom att återställa värdena. |
klona | Objektklon () | Skapar en grunt kopia av HashTable-objektet och returnerar det. |
beräkna | V-beräkning (K-tangent, BiFunction remappingFunction) | Beräknar mappning mellan den givna nyckeln och värdet med hjälp av remapping-funktionen. |
beräknaIfAbsent | V computeIfAbsent (K-tangent, Function mappingFunction) | Beräknar kartläggning mellan den givna nyckeln och värdet med hjälp av remapping-funktionen om den angivna nyckeln inte redan är associerad med det givna värdet. |
computeIfPresent | V computeIfPresent (K-tangent, BiFunction remappingFunction) | Om den givna nyckeln är närvarande används remapping-funktionen för att beräkna en ny mappning mellan den givna tangenten och värdet. |
element | Uppräkningselement () | Det returnerar en uppräkning av värdena i hashtabellen. |
är lika med | booleska lika (Objekt o) | Jämför det givna objektet med HashTable. |
för varje | ogiltig för varje (BiConsumer-åtgärd) | Den givna åtgärden utförs för vart och ett av HashTable-elementen tills alla element är uttömda. |
getOrDefault | V getOrDefault (Objektnyckel, V defaultValue) | Den returnerar det värde som den angivna nyckeln mappas till eller defaultValue om kartan inte innehåller någon mappning för nyckeln. |
hash-kod | int hashCode () | Returnerar haschkoden för HashTable. |
knapparna | Uppräkningstangenter () | Returnerar nycklar i HashTable som en uppräkning. |
keySet | Set keySet () | Returnerar tangentuppsättningen (tangenter som en uppsättning) för HashTable. |
gå | V-sammanslagning (K-tangent, V-värde, BiFunction-remappingFunction) | Kartlägger den angivna nyckeln med värdet som inte är noll med hjälp av remapping-funktionen om nyckeln inte redan finns eller null. |
sätta | V put (K-tangent, V-värde) | Infogar ett nytt nyckel-värdepar i HashTable. |
sätt alla | void putAll (Map t)) | Sätter eller kopierar nyckel-värdeparen för den angivna kartan till HashTable. |
putIfAbsent | V putIfAbsent (K-tangent, V-värde) | Associerar den angivna nyckeln med nollvärdet om nyckeln inte redan finns eller är associerad med null. |
ta bort | boolean remove (Objektnyckel, Objektvärde) | Tar bort det angivna nyckel-värdeparet från HashTable. |
byta ut | V ersätt (K-tangent, V-värde) | Det ersätter värdet på den givna nyckeln med det angivna värdet. |
byta ut | boolean ersättare (K-tangent, V oldValue, V newValue) | Ersätter det gamla värdet för den angivna nyckeln med det nya värdet. |
Ersätt alla | void replaceAll (BiFunction-funktion) | Alla poster i HashTable ersätts med det värde som erhålls från utvärderingen av den givna funktionen. |
att stränga | String toString () | Konverterar HashTable-objektet till dess strängrepresentation. |
värden | Samlingsvärden () | Returnerar värdena i HashTable som en samling. |
innehåller | boolean innehåller (Objektvärde) | Kontrollerar om det angivna värdet finns i HashTable. Returnerar sant om nuvarande returnerar falskt. |
innehåller värde | boolean containsValue (Objektvärde) | Kontrollerar om det finns ett värde lika med det givna värdet i HashTable och returnerar true. |
innehållerKey | boolean containsKey (Objektnyckel) | Kontrollerar om det finns någon nyckel som är lika med den angivna nyckeln i HashTable och returnerar true om ja. |
är tom | boolean isEmpty () | Kontrollerar om den givna HashTable är tom och returnerar true om ja. |
uppkok | skyddad ogiltig rehash () | Den används för att öka storleken på hashbordet och återkasta alla dess nycklar. |
skaffa sig | V get (Objektnyckel) | Hämtar värdet för den angivna nyckeln. |
ta bort | V ta bort (Objektnyckel) | Raderar den angivna nyckeln och värdet och returnerar detta värde. |
storlek | int storlek () | Returnerar storleken eller antalet element som finns i HashTable. |
Implementering av HashTable
Nedan följer implementeringen av klassen i Java. Här har vi demonstrerat alla viktiga metoder som tillhandahålls av klassen.
vad används c ++ för idag
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); } }
Produktion:
Innehållet i Hashtable:
104: Blå
103: Brun
102: Orange
101: Grön
100: Nätverk
Hashtable-värde vid 101: grön
Hashtable-värde vid 105: Värde hittades inte
Efter borttagning (102), Hash-tabellen: {104 = Blå, 103 = Brun, 101 = Grön, 100 = Röd}
Uppdaterad hashtabell: {104 = Blå, 103 = Brun, 102 = Orange, 101 = Grön, 100 = Röd}
HashTable Java-exempel
I det här programmet definierar vi en hashtable med tangenterna som kontoinnehavarens namn med respektive kontosaldo som värden. Först hämtar vi nycklarna från HashTable som en uppräkning. Sedan använder vi den här uppräkningen och skriver ut nyckel-värde-paren från HashTable.
Senare uppdaterar vi kontosaldot för en av innehavarna och skriver ut det uppdaterade beloppet.
Programmet nedan visar detta genomförande.
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')); } }
Produktion:
Kontosaldot Hashtable:
NYCKELVÄRDE
James 78,48
Ben 95.43
Dillon 499.22
Lily 4367.34
Lacy 1200.0
Bens nya kontosaldo: 1095,43
Hashtable mot Hashmap
HashTable | HashMap |
---|---|
HashTable är långsam att köra. | HashMap är snabbare. |
Ärver ordboksklass. | Inherits AbstractMap-klass. |
Är en äldre klass. | HashMap-klass introducerad i JDK 1.2 |
Synkroniserad och trådsäker. | Icke-synkroniserad och icke-tråd säker. |
Den synkroniseras internt och kan inte ångras. | Det kan synkroniseras med metoden Collections.synchronizedMap. |
Ingen nollnyckel / värde tillåtet. | Tillåter nollnyckel och flera nollvärden. |
Kan köras med hjälp av Enumerator och Iterator. | Kan endast passeras med Iterator. |
Vanliga frågor
F # 1) Vad är Hashtable i Java?
Svar: Det är en äldre klass som ärver klassen 'ordbok' och lagrar nyckel-värdepar.
F # 2) Varför Hashtable används?
Svar: Den används för att lagra nyckel-värdepar. Så när vi behöver lagra nyckel-värdeparen i tabellformat går vi till HashTable. För det andra kan den lagra flera värden för samma nyckel med hjälp av hinkar. Datainhämtning är effektiv i HashTables.
F # 3)Hur skapar du en Hashtable i Java?
Svar: Du kan skapa det genom att starta ett objekt av klassen java.util.HashTable.
HashTable hashTable = new HashTable();
Ovanstående uttalande skapar en HashTable med namnet 'hashTable' med nycklar och värden av typen String.
F # 4) Är Hashtable trådsäker?
Svar: Ja, det är trådsäkert. Om trådsäkerhet inte krävs kan vi välja HashMap.
F # 5) Hur fungerar Hashtable internt i Java med ett exempel?
Svar: Internt lagras nyckel-värdepar i en struktur som kallas hinkar. Skopans position bestäms av nyckelns hashCode. Hashfunktionen hämtar skopplatsen med Key's hashCode.
Slutsats
HashTable består av data som lagras i form av nyckel-värdepar. Nycklarna eller värdena kan inte vara noll. I Java implementeras den med HashTable-klassen.
Vi har sett de konstruktörer och metoder som tillhandahålls av HashTable-klassen tillsammans med implementeringen av HashTable på Java-språk.
I vår kommande handledning kommer vi att diskutera HashMap-samlingen.
falsk e-postadress jag kan använda
=> Besök här för den exklusiva Java-utbildningsserien.
Rekommenderad läsning
- Java Reflection Tutorial med exempel
- Java Scanner-klasshandledning med exempel
- Java Basics: Java Syntax, Java Class och Core Java Concepts
- Vad är Java Vector | Java Vector Class Tutorial med exempel
- Java SWING-handledning: Container, komponenter och händelsehantering
- Java Array Class Tutorial - java.util.Arrays Class med exempel
- JAVA-handledning för nybörjare: 100+ praktiska Java-videohandledning
- Java String innehåller () Metodhandledning med exempel