what is java hashtable hashtable implementation example
In deze zelfstudie wordt uitgelegd wat een Java-hashtabel, constructeurs en methoden van hashtabelklasse, implementatie en hashtabel versus hashmap is:
Wat is een hashtabel?
Een hashtabel in Java is een reeks elementen die lijsten zijn. Elk van deze lijsten wordt een emmer
Het brengt de sleutels tot waarden in kaart. In Java wordt de hashtabel geïmplementeerd door de ‘HashTable’ -klasse. Deze klasse implementeert de kaartinterface en neemt de woordenboekklasse over.
Bekijk hier de perfecte Java-trainingsgids.
Enkele van de unieke kenmerken van Hashtable in Java zijn als volgt:
- Het is een array die lijsten of buckets als elementen bevat.
- Het heeft unieke elementen.
- Er is geen null-sleutel of null-waarde in de hashtabel.
- Het is vergelijkbaar met Hashmap maar is gesynchroniseerd.
Wat je leert:
HashTable-klasse in Java
In Java is deze klasse lid van het pakket java.util. We moeten dus een van de volgende uitspraken in ons programma opnemen om de HashTable-klassefunctionaliteit op te nemen.
importeer java.util. *;
OF
importeer java.util.HashTable;
Een algemene klassendeclaratie voor de klasse java.util.HashTable wordt hieronder gegeven:
Hier,
- K => type sleutels van de HashTable
- V => type waarden in kaart gebracht
De klasse-API van HashTable bestaat uit constructors die worden gebruikt om de klasseobjecten te construeren en de verschillende bewerkingen of methoden die deel uitmaken van de klasse die een soepele werking van de klasse HashTable teweegbrengen.
Constructeurs van de HashTable-klasse
Constructor-prototype | Omschrijving | |
---|---|---|
Set | Set | Het retourneert een vaste weergave van de toewijzingen in de kaart. |
Hashtabel () | Standaardconstructor: maakt een HashTable-klasseobject met initiële standaardcapaciteit en belastingsfactor. | |
Hashtable (int capaciteit) | Maakt een hashtabel met de opgegeven initiële capaciteit. | |
Hashtable (int capacity, float loadFactor) | Maakt een hashtabelobject met de aanvankelijke capaciteit = capaciteit en belastingsfactor = loadFactor. | |
Hashtable (kaart t) | Creëert een nieuwe hashtabel van de gegeven map die is opgegeven als het argument. |
Methoden van HashTable-klasse
Methode | Methode Prototype | Omschrijving |
---|---|---|
Doorzichtig | leegte duidelijk () | Wist de hashtabel door de waarden te resetten. |
kloon | Object kloon () | Maakt een ondiepe kopie van het HashTable-object en retourneert deze. |
berekenen | V-berekening (K-toets, BiFunction-remappingFunction) | Berekent de toewijzing tussen de gegeven sleutel en de waarde met behulp van de functie voor opnieuw toewijzen. |
computeIfAbsent | V computeIfAbsent (K-toets, functie mappingFunction) | Berekent de toewijzing tussen de opgegeven sleutel en de waarde met behulp van de functie voor opnieuw toewijzen als de opgegeven sleutel niet al aan de opgegeven waarde is gekoppeld. |
computeIfPresent | V computeIfPresent (K-toets, BiFunction remappingFunction) | Als de gegeven sleutel aanwezig is, wordt de remapping-functie gebruikt om een nieuwe mapping tussen de gegeven sleutel en de waarde te berekenen. |
elementen | Opsommingselementen () | Het retourneert een opsomming van de waarden in de hashtabel. |
gelijk is | boolean is gelijk aan (Object o) | Vergelijkt het gegeven object met de HashTable. |
voor elk | void forEach (BiConsumer-actie) | De gegeven actie wordt uitgevoerd voor elk van de HashTable-elementen totdat alle elementen zijn uitgeput. |
getOrDefault | V getOrDefault (Objectsleutel, V defaultValue) | Het retourneert de waarde waaraan de opgegeven sleutel is toegewezen of defaultValue als de kaart geen toewijzing voor de sleutel bevat. |
hashCode | int hashCode () | Retourneert de hash-code van de HashTable. |
sleutels | Opsommingstoetsen () | Retourneert sleutels in de HashTable als een opsomming. |
sleutelbos | Set keySet () | Retourneert de sleutelset (sleutels als een set) voor de HashTable. |
Gaan | V samenvoegen (K-toets, V-waarde, BiFunction-remappingFunction) | Wijst de gegeven sleutel toe aan de niet-null-waarde met behulp van de remapping-functie als de sleutel niet al aanwezig of null is. |
zetten | V put (K-toets, V-waarde) | Voegt een nieuw sleutel / waarde-paar in de HashTable in. |
zet alle | void putAll (Kaart t)) | Zet of kopieert de sleutel / waarde-paren van de gegeven kaart in de HashTable. |
putIfAbsent | V putIfAbsent (K-toets, V-waarde) | Associeert de gegeven sleutel met de null-waarde als de sleutel niet al aanwezig is of niet is gekoppeld aan null. |
verwijderen | boolean remove (Objectsleutel, Objectwaarde) | Verwijdert het gegeven sleutel / waarde-paar uit de HashTable. |
vervangen | V vervangen (K-toets, V-waarde) | Het vervangt de waarde van de opgegeven sleutel door de opgegeven waarde. |
vervangen | boolean replace (K-toets, V oldValue, V newValue) | Vervangt de oude waarde van de opgegeven sleutel door de nieuwe waarde. |
vervang alles | void replaceAll (BiFunction-functie) | Alle vermeldingen in de HashTable worden vervangen door de waarde die wordt verkregen door het evalueren van de gegeven functie. |
toString | String toString () | Converteert het HashTable-object naar de tekenreeksweergave. |
waarden | Verzamelingswaarden () | Retourneert de waarden in de HashTable als een verzameling. |
bevat | boolean bevat (Objectwaarde) | Controleert of de opgegeven waarde aanwezig is in de HashTable. Geeft true terug als aanwezig, else retourneert false. |
bevat waarde | boolean containsValue (waarde van het object) | Controleert of er een waarde is die gelijk is aan de opgegeven waarde in de HashTable en retourneert true. |
bevatKey | boolean containsKey (Object sleutel) | Controleert of er een sleutel is die gelijk is aan de opgegeven sleutel in de HashTable en retourneert true indien ja. |
is leeg | boolean isEmpty () | Controleert of de opgegeven HashTable leeg is en geeft true terug indien ja. |
rehash | beschermde ongeldige rehash () | Het wordt gebruikt om de hashtabel groter te maken en alle sleutels opnieuw in te pakken. |
krijgen | V get (Objectsleutel) | Haalt de waarde op voor de opgegeven sleutel. |
verwijderen | V remove (Objectsleutel) | Verwijdert de opgegeven sleutel en waarde en retourneert deze waarde. |
grootte | int maat () | Retourneert de grootte of het aantal elementen dat aanwezig is in de HashTable. |
Implementatie van HashTable
Hieronder wordt de implementatie van de klasse in Java gegeven. Hier hebben we alle belangrijke methoden gedemonstreerd die door de klas worden geboden.
automatisering testen interviewvragen en antwoorden voor ervaren
Uitgang:
De inhoud van Hashtable:
104: Blauw
103: Bruin
102: Oranje
101: Groen
100: Netwerk
Hashtable-waarde op 101: groen
Hashtable-waarde op 105: waarde niet gevonden
Na verwijdering (102), de hash-tabel: {104 = blauw, 103 = bruin, 101 = groen, 100 = rood}
Bijgewerkte hash-tabel: {104 = blauw, 103 = bruin, 102 = oranje, 101 = groen, 100 = rood}
HashTable Java-voorbeeld
In dit programma definiëren we een hashtabel met de sleutels als de namen van de rekeninghouder met hun respectievelijke rekeningsaldi als waarden. Eerst halen we de sleutels uit de HashTable op als een opsomming. Vervolgens gebruiken we deze opsomming om de sleutel / waarde-paren uit de HashTable af te drukken.
Later werken we het rekeningsaldo van een van de houders bij en drukken we het bijgewerkte bedrag af.
Het onderstaande programma toont deze implementatie.
Uitgang:
Het rekeningsaldo Hashtable:
SLEUTEL WAARDE
James 78.48
Ben 95.43
Dillon 499,22
Lelie 4367.34
Lacy 1200.0
Ben's nieuwe rekeningsaldo: 1095,43
Hashtable versus Hashmap
HashTable | Hash kaart |
---|---|
HashTable is traag om uit te voeren. | HashMap is sneller. |
Erft woordenboekklasse. | Erft de klasse AbstractMap. |
Is een legacy-klasse. | HashMap-klasse geïntroduceerd in JDK 1.2 |
Gesynchroniseerd en draadveilig. | Niet-gesynchroniseerd en niet-thread-safe. |
Het wordt intern gesynchroniseerd en kan niet ongedaan worden gemaakt. | Het kan worden gesynchroniseerd met de methode Collections.synchronizedMap. |
Geen null-sleutel / waarde toegestaan. | Staat null-sleutel en meerdere null-waarden toe. |
Kan worden doorlopen met Enumerator en Iterator. | Kan alleen worden doorlopen met Iterator. |
Veel Gestelde Vragen
V # 1) Wat is hashtabel in Java?
Antwoord: Het is een oude klasse die de klasse 'Dictionary' erft en sleutelwaardeparen opslaat.
Q # 2) Waarom wordt hashtabel gebruikt?
Antwoord: Het wordt gebruikt om sleutel / waarde-paren op te slaan. Dus als we de sleutel / waarde-paren in tabelvorm moeten opslaan, gaan we voor HashTable. Ten tweede kan het meerdere waarden voor dezelfde sleutel opslaan met behulp van buckets. Het ophalen van gegevens is efficiënt in HashTables.
Q # 3)Hoe maak je een hashtabel in Java?
Antwoord: U kunt het maken door een object van de klasse java.util.HashTable te instantiëren.
De bovenstaande instructie maakt een hashtabel aan met de naam ‘hashTable’ met sleutels en waarden van het type String.
Q # 4) Is hashtable thread-safe?
Antwoord: Ja, het is draadveilig. Als draadveiligheid niet vereist is, kunnen we kiezen voor HashMap.
Q # 5) Hoe Hashtable intern werkt in Java met een voorbeeld?
Antwoord: Intern slaat het sleutel / waarde-paren op in een structuur die buckets wordt genoemd. De positie van de bucket wordt bepaald door de hashCode van de sleutel. De hash-functie haalt de bucketlocatie op met behulp van de hashCode van de sleutel.
Gevolgtrekking
HashTable bestaat uit gegevens die zijn opgeslagen in de vorm van sleutel / waarde-paren. De sleutels of waarden mogen niet null zijn. In Java wordt het geïmplementeerd met behulp van de HashTable-klasse.
We hebben de constructors en methoden gezien die door de klasse HashTable worden geleverd, samen met de implementatie van HashTable in de Java-taal.
In onze aanstaande tutorial zullen we de HashMap-collectie bespreken.
wat heb ik nodig om een jar-bestand uit te voeren
Bezoek hier voor de exclusieve Java Training Tutorial Series.
Aanbevolen literatuur
- Zelfstudie over reflectie in Java met voorbeelden
- Zelfstudie voor Java-scannerklassen met voorbeelden
- Java Basics: Java Syntax, Java Class en Core Java Concepts
- Wat is Java-vector | Java Vector Class-zelfstudie met voorbeelden
- Java SWING-zelfstudie: afhandeling van containers, componenten en gebeurtenissen
- Zelfstudie voor Java-array-klassen - java.util.Arrays-klasse met voorbeelden
- JAVA-zelfstudie voor beginners: 100+ praktische Java-videotutorials
- Java String bevat () Method Tutorial met voorbeelden