Java Maps और HashMap
प्रोग्रामिंग में, डेटा टाइप्स का उपयोग डेटा के विशेष प्रकारों को वर्गीकृत करने के लिए किया जाता है। प्रत्येक डेटा टाइप को अलग तरीके से स्टोर किया जाता है, और वह डेटा टाइप जिसमें मान स्टोर किया जाता है, यह निर्धारित करेगा कि मान पर कौन से ऑपरेशन किए जा सकते हैं।
जब आप Java में काम कर रहे होते हैं, तो एक क्लास जिसका आप सामना कर सकते हैं वह है Java HashMap क्लास। यह क्लास कलेक्शन फ्रेमवर्क का हिस्सा है और डेवलपर्स को Map डेटा टाइप का उपयोग करके डेटा स्टोर करने की अनुमति देती है।
यह ट्यूटोरियल Java HashMaps की मूल बातों पर चर्चा करेगा, HashMap कैसे बनाएं, और उन मुख्य मेथड्स का पता लगाएगा जिनका उपयोग HashMap क्लास के साथ काम करते समय किया जा सकता है। यह आर्टिकल पूरे समय उदाहरणों का संदर्भ देगा ताकि हम HashMap क्लास को अधिक गहराई से समझा सकें।
Java Maps और HashMap
Java Map इंटरफ़ेस का उपयोग Map मानों को key/value pair में स्टोर करने के लिए किया जाता है। Keys यूनिक मान हैं जो एक विशिष्ट मान से जुड़े होते हैं। Java में, एक map डुप्लीकेट keys नहीं रख सकता, और प्रत्येक key को एक विशेष मान से जुड़ा होना चाहिए।
Map द्वारा प्रदान की जाने वाली key/value संरचना आपको उनके keys के आधार पर मानों को एक्सेस करने की अनुमति देती है। इसलिए, यदि आपके पास key gbp और मान United Kingdom के साथ एक map था, तो जब आप key gbp को संदर्भित करते हैं तो मान "United Kingdom" लौटाया जाएगा।
HashMap क्लास कलेक्शन फ्रेमवर्क का हिस्सा है और आपको Map इंटरफ़ेस और हैश टेबल्स का उपयोग करके डेटा स्टोर करने की अनुमति देती है। हैश टेबल्स विशेष संग्रह हैं जिनका उपयोग key/value आइटम्स को स्टोर करने के लिए किया जाता है।
इससे पहले कि हम HashMap बना सकें, हमें पहले HashMap पैकेज आयात करना होगा। यहाँ हम Java प्रोग्राम में ऐसा कैसे कर सकते हैं:
import java.util.hashmap;
अब जब हमने HashMap पैकेज आयात कर लिया है, तो हम Java में HashMaps बनाना शुरू कर सकते हैं।
HashMap बनाएं
Java में HashMap बनाने के लिए, हम निम्न सिंटैक्स का उपयोग कर सकते हैं:
HashMap<KeyType, ValueType> map_name = new HashMap<KeyType, ValueType>(capacity, loadFactor);
आइए इसे इसके मूल घटकों में विभाजित करते हैं:
- HashMap का उपयोग हमारे कोड को यह बताने के लिए किया जाता है कि हम hashmap घोषित कर रहे हैं।
- <KeyType, ValueType> क्रमशः keys और values के लिए डेटा टाइप्स स्टोर करता है।
- map_name हमारे द्वारा घोषित hashmap का नाम है।
- new HashMap<KeyType, ValueType> हमारे कोड को हमारे द्वारा निर्दिष्ट डेटा टाइप्स के साथ HashMap इनिशियलाइज़ करने के लिए कहता है।
- capacity हमारे कोड को बताता है कि यह कितनी एंट्रीज़ स्टोर कर सकता है। डिफ़ॉल्ट रूप से, यह 16 पर सेट है। (वैकल्पिक)
- loadFactor हमारे कोड को बताता है कि जब हमारी हैश टेबल एक निश्चित क्षमता तक पहुंचती है, तो मूल हैश टेबल के आकार से दोगुनी नई हैश टेबल बनाई जानी चाहिए। डिफ़ॉल्ट रूप से, यह 0.75 (या 75% क्षमता) पर सेट है। (वैकल्पिक)
मान लीजिए हम एक स्थानीय मुद्रा विनिमय व्यवसाय के लिए प्रोग्राम बना रहे हैं। वे एक प्रोग्राम बनाना चाहते हैं जो उन देशों के नाम और मुद्रा कोड स्टोर करता है जिनमें वे विनिमय सेवाएं प्रदान करते हैं। इस डेटा को स्टोर करने के लिए HashMap का उपयोग करना एक अच्छा विचार है क्योंकि हमारे पास दो आइटम हैं जिन्हें हम एक साथ स्टोर करना चाहते हैं: देश का नाम और मुद्रा कोड।
यहाँ वह कोड है जिसका उपयोग हम इस उद्देश्य के लिए HashMap बनाने के लिए करेंगे:
import java.util.HashMap; HashMap<String, String> currencyCodes = new HashMap<String, String>();
इस उदाहरण में, हमने currencyCodes नामक एक HashMap घोषित किया है जो दो String मान स्टोर करता है। अब जब हमारा HashMap है, तो हम आइटम्स जोड़ना और इसकी सामग्री में हेरफेर करना शुरू कर सकते हैं।
आइटम्स जोड़ें
HashMap क्लास डेटा को स्टोर और हेरफेर करने के लिए उपयोग किए जा सकने वाले मेथड्स की एक विस्तृत श्रृंखला प्रदान करती है। put() मेथड का उपयोग key/value संरचना का उपयोग करके HashMap में मान जोड़ने के लिए किया जाता है।
आइए मुद्रा विनिमय पर वापस चलते हैं। मान लीजिए हम अपने प्रोग्राम में एंट्री GBP/United Kingdom जोड़ना चाहते हैं, जो UK के लिए मुद्रा मान स्टोर करेगा। इस उदाहरण में GBP key को United Kingdom मान से मैप किया गया है। हम निम्न कोड का उपयोग करके ऐसा कर सकते हैं:
import java.util.HashMap; class CurrencyExchange { public static void main(String[] args) { HashMap<String, String> currencyCodes = new HashMap<String, String>(); currencyCodes.put("GBP", "United Kingdom"); currencyCodes.put("USD", "United States"); System.out.println(currencyCodes); } }
हमारे कोड में, हम currencyCodes नामक एक hash map इनिशियलाइज़ करते हैं, फिर हम hash map में एंट्री जोड़ने के लिए put() मेथड का उपयोग करते हैं। इस एंट्री में key GBP और मान United Kingdom है। फिर हम HashMap के मान को प्रिंट करते हैं, जो निम्न लौटाता है:
{GBP=United Kingdom,USD=United States}
जैसा कि आप देख सकते हैं, हमारा HashMap अब दो मान रखता है: GBP=United Kingdom और USD=United States।
आइटम एक्सेस करें
HashMap में आइटम एक्सेस करने के लिए, आप get() मेथड का उपयोग कर सकते हैं। get मेथड एक पैरामीटर स्वीकार करता है: उस मान के लिए key नाम जिसे आप पुनः प्राप्त करना चाहते हैं।
मान लीजिए हम GBP से जुड़े देश का नाम पुनः प्राप्त करना चाहते हैं। हम निम्न कोड का उपयोग करके ऐसा कर सकते हैं:
… String gbp = currencyCodes.get("GBP"); System.out.println(currencyCodes); …
हमारा कोड लौटाता है: United Kingdom।
आइटम हटाएं
remove() मेथड का उपयोग HashMap से आइटम हटाने के लिए किया जाता है। remove() एक पैरामीटर स्वीकार करता है: उस key का नाम जिसकी एंट्री आप हटाना चाहते हैं।
मान लीजिए हम अपने HashMap से GBP हटाना चाहते हैं। हम निम्न कोड का उपयोग करके ऐसा कर सकते हैं:
… currencyCodes.remove("GBP"); System.out.println(currencyCodes); …
जब हम अपना कोड चलाते हैं, तो GBP हमारे HashMap से हटा दिया जाता है और निम्न प्रतिक्रिया लौटाई जाती है: {USD=United States}
इसके अलावा, clear() मेथड का उपयोग HashMap से सभी आइटम्स हटाने के लिए किया जाता है। clear() कोई पैरामीटर स्वीकार नहीं करता। यहाँ clear() मेथड का एक उदाहरण है:
… currencyCodes.clear(); System.out.println(currencyCodes); …
हमारा कोड खाली HashMap लौटाता है: {}।
HashMap एलिमेंट्स बदलें
replace() मेथड का उपयोग किसी विशिष्ट key से जुड़े मान को नए मान से बदलने के लिए किया जाता है। replace() दो पैरामीटर्स स्वीकार करता है: उस मान की key जिसे आप बदलना चाहते हैं, और वह नया मान जिससे आप पुराने मान को बदलना चाहते हैं।
मान लीजिए, उदाहरण के लिए, हम अपने HashMap में मान United Kingdom को Great Britain से बदलना चाहते हैं। हम निम्न कोड का उपयोग करके ऐसा कर सकते हैं:
… currencyCodes.replace("GBP", "Great Britain") System.out.print(currencyCodes); …
जब हम अपना कोड निष्पादित करते हैं, तो key GBP का मान (जो इस मामले में United Kingdom है) Great Britain से बदल दिया जाता है और हमारा प्रोग्राम निम्न लौटाता है:
{GBP=Great Britain,USD=United States}
HashMap के माध्यम से पुनरावृति करें
इसके अतिरिक्त, आप Java में HashMap के माध्यम से पुनरावृति कर सकते हैं। HashMap तीन मेथड्स प्रदान करता है जिनका उपयोग HashMap के माध्यम से पुनरावृति करने के लिए किया जा सकता है:
- keySet() का उपयोग HashMap में keys के माध्यम से पुनरावृति करने के लिए किया जाता है।
- values() का उपयोग HashMap में values के माध्यम से पुनरावृति करने के लिए किया जाता है।
- entrySet() का उपयोग HashMap में keys और values दोनों के माध्यम से पुनरावृति करने के लिए किया जाता है।
HashMap के माध्यम से पुनरावृति करने का सबसे आसान तरीका for-each लूप का उपयोग करना है। यदि आप Java for-each लूप्स के बारे में अधिक जानने में रुचि रखते हैं, तो आप यहां उस विषय पर हमारा ट्यूटोरियल पढ़ सकते हैं।
मान लीजिए हम अपने currencyCodes”HashMap में हर मान को कंसोल पर प्रिंट करना चाहते हैं ताकि हम मुद्रा रूपांतरण व्यवसाय को HashMap में स्टोर उनके द्वारा प्रदान की जाने वाली मुद्राओं की सूची दिखा सकें। हम इसे करने के लिए निम्न कोड का उपयोग कर सकते हैं:
import java.util.HashMap; class CurrencyExchange { public static void main(String[] args) { HashMap<String, String> currencyCodes = new HashMap<String, String>(); currencyCodes.put("GBP", "Great Britain"); currencyCodes.put("USD", "United States"); for(String value : currencyCodes.values()) { System.out.println(value); } } }
जब हम अपना कोड चलाते हैं, तो निम्न प्रतिक्रिया लौटाई जाती है:
Great Britain
United States
हमारे कोड में, हम currencyCodes.values() की सूची में हर आइटम के माध्यम से पुनरावृति करने के लिए for-each लूप का उपयोग करते हैं। फिर हम प्रत्येक आइटम को नई लाइन पर प्रिंट करते हैं।
यदि हम हर key के माध्यम से पुनरावृति करना चाहते थे और अपने HashMap में प्रत्येक key का नाम प्रिंट करना चाहते थे, तो हम ऊपर अपने कोड में values() को keySet() से बदल सकते थे। यहाँ हमारा प्रोग्राम क्या लौटाएगा:
GBP
USD
निष्कर्ष
Java HashMap क्लास का उपयोग key/value संग्रह संरचना का उपयोग करके डेटा स्टोर करने के लिए किया जाता है। यह संरचना उपयोगी है यदि आप दो मान स्टोर करना चाहते हैं जो एक दूसरे से जुड़े होने चाहिए।
इस ट्यूटोरियल ने HashMaps की मूल बातें कवर कीं। हमने आपको दिखाया कि HashMap कैसे बनाएं, और HashMap के सामान्य मेथड्स के क्रिया में कुछ उदाहरणों का पता लगाया। अब आप एक्सपर्ट की तरह Java HashMaps के साथ काम करने के लिए आवश्यक जानकारी से लैस हैं!