what is java hashtable hashtable implementation example
यह ट्यूटोरियल बताता है कि जावा हैशटेबल, कंस्ट्रक्टर्स और हैशटेबल क्लास के तरीके, कार्यान्वयन और हैशटेब बनाम हैशमैप क्या है:
एक हैशटेबल क्या है?
जावा में एक हैशटेबल तत्वों की एक सूची है जो सूची में हैं। इनमें से प्रत्येक सूची को एक करार दिया गया है बाल्टी ।
यह मानों की कुंजी को मैप करता है। जावा में, हैश टेबल को 'हैशटेबल' वर्ग द्वारा लागू किया जाता है। यह क्लास मैप इंटरफेस को लागू करता है और डिक्शनरी क्लास को इनहेरिट करता है।
=> यहाँ बिल्कुल सही जावा प्रशिक्षण गाइड देखें।
जावा में हैशटेबल की कुछ अनूठी विशेषताएं इस प्रकार हैं:
- यह एक ऐसा सरणी है, जिसमें इसके तत्वों के रूप में सूचियाँ या बाल्टियाँ हैं।
- इसमें अद्वितीय तत्व हैं।
- हैशटेबल में कोई नल कुंजी या शून्य मान नहीं है।
- यह हशमप के समान है लेकिन सिंक्रनाइज़ है।
आप क्या सीखेंगे:
जावा में हैशटेबल क्लास
जावा में, यह वर्ग java.util पैकेज का सदस्य है। इस प्रकार हमें हैशटेबल क्लास फंक्शनलिटी को शामिल करने के लिए अपने प्रोग्राम में निम्न में से एक स्टेटमेंट को शामिल करना होगा।
आयात java.util। *;
या
आयात java.util.HashTable;
Java.util.HashTable वर्ग के लिए एक सामान्य श्रेणी की घोषणा नीचे दी गई है:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
यहाँ,
- K => हैशटेबल की कुंजियों का प्रकार
- V => प्रकार का मान मैप किया गया
हैशटेबल क्लास एपीआई में ऐसे कंस्ट्रक्टर होते हैं जिनका उपयोग क्लास ऑब्जेक्ट और विभिन्न ऑपरेशंस या विधियों के निर्माण के लिए किया जाता है जो क्लास का एक हिस्सा होता है जो हैशटेबल क्लास के सुचारू कामकाज को लाता है।
हैशटेबल क्लास के कंस्ट्रक्टर्स
कंस्ट्रक्टर प्रोटोटाइप | विवरण | |
---|---|---|
सेट | सेट | यह मानचित्र में निहित मैपिंग का एक सेट दृश्य देता है। |
हैश तालिका () | डिफ़ॉल्ट निर्माता: प्रारंभिक डिफ़ॉल्ट क्षमता और लोड कारक के साथ एक हैशटेबल क्लास ऑब्जेक्ट बनाता है। | |
हैशटेबल (अंतर क्षमता) | निर्दिष्ट प्रारंभिक क्षमता के साथ एक हैश तालिका बनाता है। | |
हैशटेबल (अंतर क्षमता, फ्लोट लोडफैक्टर) | प्रारंभिक क्षमता = क्षमता और लोड फैक्टर = लोडफ़ैक्टर के साथ हैश टेबल ऑब्जेक्ट बनाता है। | |
हैशटेबल (मानचित्र t) | तर्क के रूप में निर्दिष्ट दिए गए नक्शे से एक नया हैशटेबल बनाता है। |
हैशटेबल क्लास के तरीके
तरीका | विधि प्रोटोटाइप | विवरण |
---|---|---|
स्पष्ट | शून्य स्पष्ट () | मानों को रीसेट करके हैशटेबल को साफ़ करता है। |
क्लोन | ऑब्जेक्ट क्लोन () | हैशटेबल ऑब्जेक्ट की उथली प्रतिलिपि बनाता है और इसे वापस करता है। |
गणना करना | V कंप्यूट (K कुंजी, BiFunction रीमैपिंग जंक्शन) | दिए गए कुंजी और रीमैपिंग फ़ंक्शन का उपयोग करके मूल्य के बीच मैपिंग की गणना करता है। |
computeIfAbsent | V computeIfAbsent (K कुंजी, फंक्शन मैपिंग फंक्शन) | दिए गए कुंजी के बीच मैपिंग की गणना करता है और यदि निर्दिष्ट कुंजी पहले से दिए गए मूल्य के साथ जुड़ा नहीं है तो रीमैपिंग फ़ंक्शन का उपयोग करके मूल्य। |
computeIfPresent | V computeIfPresent (K कुंजी, BiFunction remappingFunction) | यदि दी गई कुंजी मौजूद है, तो दिए गए कुंजी और मूल्य के बीच एक नए मानचित्रण की गणना करने के लिए रीमैपिंग फ़ंक्शन का उपयोग किया जाता है। |
तत्वों | गणना तत्व () | यह हैश तालिका में मानों की गणना करता है। |
बराबरी | बूलियन बराबर (ऑब्जेक्ट ओ) | दिए गए ऑब्जेक्ट की हैशटेबल के साथ तुलना करता है। |
प्रत्येक के लिए | शून्य forEach (BiConsumer कार्रवाई) | दिए गए एक्शन को हैशटेबल तत्वों में से प्रत्येक के लिए किया जाता है जब तक कि सभी तत्व समाप्त नहीं हो जाते। |
getOrDefault | V getOrDefault (ऑब्जेक्ट कुंजी, V defaultValue) | यह उस मान को लौटाता है जिसमें निर्दिष्ट कुंजी मैप की जाती है या डिफ़ॉल्ट होती है यदि मानचित्र में कुंजी के लिए कोई मैपिंग नहीं है। |
हैश कोड | int हैशकोड () | हैशटेबल का हैश कोड लौटाता है। |
चांबियाँ | गणना कुंजी () | एक गणना के रूप में हैशटेबल में चाबियाँ लौटाता है। |
चाबीगुछा | सेट कीसेट () | हैशटेबल के लिए कीसेट (सेट के रूप में कुंजियाँ) देता है। |
जाओ | V मर्ज (K कुंजी, V मान, BiFunction रीमैपिंग फ़ंक्शन) | यदि कुंजी पहले से मौजूद या शून्य नहीं है, तो रीमैपिंग फ़ंक्शन का उपयोग करके गैर-शून्य मान के साथ दी गई कुंजी को मैप करें। |
लगाया हुआ | V put (K कुंजी, V मान) | हैशटेबल में एक नया कुंजी-मूल्य युग्म सम्मिलित करता है। |
सभी रखें | शून्य putAll (मानचित्र t) | हशटेबल में दिए गए नक्शे के कुंजी-मूल्य जोड़े को डालता या कॉपी करता है। |
putIfAbsent | V putIfAbsent (K कुंजी, V मान) | दिए गए कुंजी को अशक्त मान के साथ संबद्ध करता है यदि कुंजी पहले से मौजूद नहीं है या अशक्त के साथ जुड़ा हुआ है। |
हटाना | बूलियन निकालें (ऑब्जेक्ट कुंजी, ऑब्जेक्ट मान) | हैशटेबल से दिए गए की-वैल्यू पेयर को हटाता है। |
बदलने के | V प्रतिस्थापित (K कुंजी, V मान) | यह दिए गए कुंजी के मूल्य को निर्दिष्ट मान से बदल देता है। |
बदलने के | बूलियन की जगह (K कुंजी, V oldValue, V newValue) | दिए गए कुंजी के पुराने मान को नए मान से बदल देता है। |
सबको बदली करें | शून्य रिप्लेसमेंट (बायफ़ंक्शन फ़ंक्शन) | हैशटेबल में सभी प्रविष्टियों को दिए गए फ़ंक्शन के मूल्यांकन से प्राप्त मूल्य से प्रतिस्थापित किया जाता है। |
स्ट्रिंग | स्ट्रिंग toString () | हैशटेबल ऑब्जेक्ट को उसके स्ट्रिंग प्रतिनिधित्व में परिवर्तित करता है। |
मूल्यों | संग्रह मान () | संग्रह के रूप में हैशटेबल में मान लौटाता है। |
शामिल | बूलियन होता है (वस्तु मूल्य) | यदि दिया गया मान हैशटेबल में मौजूद है, तो जाँच करता है। अगर वर्तमान में असत्य लौटता है, तो सच लौटाता है। |
मान होता है | बूलियन समरूपता (वस्तु मान) | यह जांचता है कि क्या हैशटेबल में दिए गए मूल्य के बराबर मूल्य है और सही है या नहीं। |
होता है | बूलियन होता हैकेय (ऑब्जेक्ट कुंजी) | जाँचता है कि क्या हैशटेबल में दी गई कुंजी के बराबर कोई कुंजी है और यदि हाँ तो सही है। |
खाली है | बूलियन इम्प्टी () | जाँचता है कि क्या दिए गए हैशटेबल खाली है और यदि हाँ तो सही है। |
मिलावत | संरक्षित शून्य रिहाश () | इसका उपयोग हैश तालिका के आकार को बढ़ाने के लिए किया जाता है और इसकी सभी चाबियों को फिर से तैयार करता है। |
प्राप्त | V मिलता है (ऑब्जेक्ट कुंजी) | दिए गए कुंजी के लिए मान निकालता है। |
हटाना | V निष्कासन (ऑब्जेक्ट कुंजी) | दी गई कुंजी और मूल्य को हटाता है और इस मान को लौटाता है। |
आकार | int आकार () | हैशटेबल में मौजूद तत्वों का आकार या संख्या लौटाता है। |
हैशटेबल का कार्यान्वयन
नीचे दिए गए जावा में वर्ग का कार्यान्वयन है। यहां हमने कक्षा द्वारा प्रदान किए गए सभी महत्वपूर्ण तरीकों का प्रदर्शन किया है।
ब्राउज़र में xml फ़ाइल कैसे खोलें
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); } }
आउटपुट:
हैशटेबल की सामग्री:
104: नीला
103: भूरा
102: नारंगी
101: हरा
100: नेटवर्क
101 पर हैशटेबल वैल्यू: ग्रीन
105 पर हैशटेबल मान: मूल्य नहीं मिला
हटाने के बाद (102), हैश टेबल: {104 = नीला, 103 = ब्राउन, 101 = हरा, 100 = लाल}
अद्यतित हैश टेबल: {104 = नीला, 103 = भूरा, 102 = नारंगी, 101 = हरा, 100 = लाल}
हैशटेबल जावा उदाहरण
इस कार्यक्रम में, हम कुंजी के साथ हैशटेबल को परिभाषित करते हैं, क्योंकि खाताधारक अपने संबंधित खातों के मानों के साथ नाम रखता है। सबसे पहले, हम एक गणना के रूप में हैशटेबल से कुंजियों को पुनः प्राप्त करते हैं। फिर इस गणना का उपयोग करते हुए, हम हैशटेबल से की-वैल्यू जोड़े को प्रिंट करते हैं।
बाद में, हम धारकों में से एक के खाते की शेष राशि को अपडेट करते हैं और अपडेट की गई राशि को प्रिंट करते हैं।
नीचे दिया गया कार्यक्रम इस कार्यान्वयन को दर्शाता है।
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')); } }
आउटपुट:
खाता शेष हैशटेबल:
मौलिक मूल्य
जेम्स 78.48
बेन 95.43
डिलन 499.22
लिली 4367.34
लेसी 1200.0
बेन का नया खाता शेष: 1095.43
हैशटेबल बनाम हैशमैप
हैश तालिका | हैश मैप |
---|---|
हैशटेबल निष्पादित करने में धीमा है। | HashMap तेजी से होता है। |
इन्हेरिट्स डिक्शनरी क्लास। | Inherits AbstractMap वर्ग। |
एक विरासत वर्ग है। | HashMap वर्ग JDK 1.2 में पेश किया गया |
सिंक्रनाइज़ और थ्रेड-सुरक्षित। | गैर-सिंक्रनाइज़ और गैर-थ्रेड सुरक्षित। |
यह आंतरिक रूप से सिंक्रनाइज़ है और इसे पूर्ववत नहीं किया जा सकता है। | इसे Collections.synchronizedMap विधि का उपयोग करके सिंक्रनाइज़ किया जा सकता है। |
कोई शून्य कुंजी / मान की अनुमति नहीं है। | अशक्त कुंजी और कई अशक्त मूल्यों की अनुमति देता है। |
Enumerator और Iterator का उपयोग करके ट्रेस किया जा सकता है। | केवल Iterator का उपयोग करके पता लगाया जा सकता है। |
बार बार पूछे जाने वाले प्रश्न
Q # 1) जावा में हैशटेबल क्या है?
उत्तर: यह एक विरासत वर्ग है जो 'शब्दकोश' वर्ग को विरासत में मिला है और कुंजी-मूल्य जोड़े को संग्रहीत करता है।
क्यू # 2) हैशटेबल का उपयोग क्यों किया जाता है?
उत्तर: इसका उपयोग कुंजी-मूल्य जोड़े को संग्रहीत करने के लिए किया जाता है। इसलिए जब हमें हब्बल के लिए जाने वाले सारणीबद्ध प्रारूप में कुंजी-मूल्य जोड़े को संग्रहीत करने की आवश्यकता होती है। दूसरे, यह एक ही कुंजी के लिए बकेट का उपयोग करके कई मान संग्रहीत कर सकता है। डेटा पुनर्प्राप्ति HashTables में कुशल है।
क्यू # 3)आप जावा में हैशटेबल कैसे बनाते हैं?
उत्तर: आप इसे java.util.HashTable क्लास के ऑब्जेक्ट को इंस्टेंट करके बना सकते हैं।
HashTable hashTable = new HashTable();
उपरोक्त कथन कुंजी के प्रकार और स्ट्रिंग के मूल्यों के साथ एक हैशटेबल नाम हैशटेबल बनाता है।
क्यू # 4) क्या हैशटेबल थ्रेड सुरक्षित है?
उत्तर: हां, यह थ्रेड-सेफ है। यदि थ्रेड सेफ़िटी की आवश्यकता नहीं है, तो हम हैशपॉप का विकल्प चुन सकते हैं।
क्यू # 5) कैसे एक उदाहरण के साथ जावा में हैशटेबल आंतरिक रूप से काम करता है?
उत्तर: आंतरिक रूप से यह बाल्टी नामक संरचना में कुंजी-मूल्य जोड़े को संग्रहीत करता है। बाल्टी की स्थिति कुंजी के हैशकोड द्वारा निर्धारित की जाती है। हैश फ़ंक्शन को कुंजी के हैशकोड का उपयोग करके बाल्टी स्थान मिलता है।
निष्कर्ष
हैशटेबल में कुंजी-मूल्य जोड़े के रूप में संग्रहीत डेटा होते हैं। कुंजी या मान शून्य नहीं हो सकते। जावा में, इसे हैशटेबल क्लास का उपयोग करके लागू किया गया है।
हमने HashTable को जावा भाषा में लागू करने के साथ-साथ निर्माणकर्ताओं और HashTable वर्ग द्वारा प्रदान की गई विधियों को देखा है।
हमारे आगामी ट्यूटोरियल में, हम HashMap संग्रह पर चर्चा करेंगे।
विंडोज़ 10 के लिए सबसे अच्छा डीवीडी डिक्रिप्टर
=> एक्सक्लूसिव जावा ट्रेनिंग ट्यूटोरियल सीरीज़ के लिए यहां जाएं।
अनुशंसित पाठ
- उदाहरणों के साथ जावा परावर्तन ट्यूटोरियल
- उदाहरण के साथ जावा स्कैनर क्लास ट्यूटोरियल
- जावा बेसिक्स: जावा सिंटैक्स, जावा क्लास और कोर जावा कॉन्सेप्ट
- जावा वेक्टर क्या है | उदाहरणों के साथ जावा वेक्टर क्लास ट्यूटोरियल
- Java SWING Tutorial: कंटेनर, कंपोनेंट्स एंड इवेंट हैंडलिंग
- जावा ऐरे क्लास ट्यूटोरियल - java.util.Arays क्लास उदाहरण के साथ
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल
- जावा स्ट्रिंग में () विधि ट्यूटोरियल विथ उदाहरण हैं