CodeGym /Java Blog /अनियमित /हाशप में मौजूदा कुंजी के मूल्य को कैसे अपडेट करें
John Squirrels
स्तर 41
San Francisco

हाशप में मौजूदा कुंजी के मूल्य को कैसे अपडेट करें

अनियमित ग्रुप में प्रकाशित
आप जानते हैं कि हैश मैप या किसी अन्य मानचित्र में हमेशा एक कुंजी और मान होता है । कुंजी को किसी कारण से कुंजी कहा जाता है क्योंकि आपको कुंजी द्वारा मूल्यों तक पहुंच प्राप्त होती है। कुंजी अद्वितीय है, लेकिन मान नहीं है। तो आप मूल्य से कुंजी प्राप्त नहीं कर सकते क्योंकि मूल्यों को डुप्लिकेट किया जा सकता है। इस लेख में, हम जावा में हैश मैप में मौजूदा कुंजी के मूल्य को अपडेट करने का तरीका जानने जा रहे हैं। जावा सिंटैक्स को याद करते हैं। जावा में हैश मैप को अगले तरीके से घोषित किया गया है:

 HashMap<Key, Value> name
आइए एक उदाहरण लेते हैं। कहते हैं, हमारे चार दोस्त हैं और विशेष रूप से उनके लिए हमने उनके नाम के साथ एक हैश मैप बनाया और भर दिया। उनकी कुंजियाँ पूर्णांक संख्याएँ हैं।

Map<Integer, String> names = new HashMap<Integer, String>();
       names.put(1, "Stan");
       names.put(2, "Kyle");
       names.put(3, "Kenny");
       names.put(4, "Cartman");
नोट: आप अपना मानचित्र विभिन्न तरीकों से बना और भर सकते हैं । उदाहरण के लिए, इनिशियलाइज़ेशन ब्लॉक का उपयोग करना। यह रहा:

Map<Integer, String> names = new HashMap<Integer, String>() {
           {
               put(1, "Stan");
               put(2, "Kyle");
               put(3, "Kenny");
               put(4, "Cartman");
           }
       };
या अन्य मानचित्र तर्क के साथ एक विधि और हैश मैप कन्स्ट्रक्टर का उपयोग करना । यह विधि संस्करण 9 और बाद के संस्करण से उपलब्ध है।

Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
जैसा कि हमने पहले कहा, हमारे हैश मैप में कुंजियाँ पूर्णांक संख्याएँ होती हैं, और मानों में कुछ तार होते हैं, हमारे मामले में, वर्णों के नाम। ठीक है, मान लीजिए कि केनी के साथ कुछ बुरा हुआ है (वे पाठक जो साउथ पार्क कार्टून श्रृंखला को जानते हैं, निश्चित रूप से जानते हैं कि केनी के साथ अक्सर कुछ बुरा हुआ है)। तो जब ऐसा होता है तो हमें केनी को इस कंपनी (हमारे हैश मैप ) से हटाना होगा, और उसे बटर के नाम से दूसरे दोस्त के साथ बदलना होगा। यह करना बहुत आसान है क्योंकि यह एक अपडेट वैल्यू ऑपरेशन है। हमारे केनी लड़के के पास एक कुंजी == 3 है । हमें कुंजी 3 के मान को बदलने की जरूरत है, जहां केनी स्थित है। ऐसा करने के लिए हम पुट () विधि का उपयोग कर सकते हैं:

names.put(3, "Butters");
इस स्थिति में, यदि हम अपने मानचित्र को स्क्रीन पर प्रदर्शित करते हैं, तो परिणाम इस प्रकार होगा:

{1=Stan, 2=Kyle, 3=Butters, 4=Cartman}
क्या होगा अगर केनी के साथ सब कुछ ठीक है और हम उसे कंपनी में रखना चाहते हैं, लेकिन हमारे पास उसकी कुंजी को अपडेट करने का एक कारण है? बता दें, वह अब नंबर तीन नहीं, बल्कि नंबर पांच हैं। चलो केनी को फिर से कुंजी 5 के साथ अपने मानचित्र में डालते हैं और परिणाम प्रिंट करते हैं। हम पुट विधि का अच्छी तरह से उपयोग कर सकते हैं। यहाँ इस उदाहरण के लिए पूरा कोड है:

import java.util.HashMap;

public class HashMapUpdKey {
   public static void main(String[] args) {
       Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
       names.put(5, "Kenny");
       System.out.println(names);
   }
}
आप शायद पहले ही अनुमान लगा चुके हैं कि परिणाम क्या होगा:

{1=Stan, 2=Kyle, 3=Kenny, 4=Cartman, 5=Kenny}
क्या हमसे यही उम्मीद की जा रही थी? अब केनी के पास हमारे हैश मैप में दो चाबियां हैं । ठीक है, सख्ती से बोलना, ये दो अलग-अलग केनी हैं, जो भी हमारा मतलब है, क्योंकि हमारी वस्तु विशिष्ट रूप से कुंजी द्वारा निर्धारित की जाती है। यह किसी व्यक्ति के पासपोर्ट की तरह होता है, इसे यूनिक होना चाहिए। इसलिए आप सीधे जोड़े जाने के बाद हैशमैप कुंजी का नाम बदल या अपडेट नहीं कर सकते। यह ऑपरेशन बस उपलब्ध नहीं है। हालाँकि, आप एक भ्रामक पैंतरेबाज़ी कर सकते हैं: नई कुंजी के साथ एक नई प्रविष्टि डालें और पुरानी को हटा दें। यह हैश मैप रिमूव मेथड का उपयोग करके किया जा सकता है । हटाएं() न केवल एसोसिएशन को हटा देता है बल्कि हटाए गए मान को भी वापस कर देता है (यदि यह पहले था)। आइए इस ऑपरेशन के साथ हमारे उदाहरण को पूरा करें:

//easy replacement example
import java.util.HashMap;

public class HashMapUpdKey {
   public static void main(String[] args) {
      Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
           
       names.put(5, "Kenny"); //Adding “new” Kenny 
       System.out.println(names.remove(3)); //Update value of the key: Removing “old” Kenny and print out deleted value

       System.out.println(names);
   }
}
अब हमें आखिरकार वह मिल गया जिसकी हमें जरूरत थी, उस कुंजी को अपडेट किया जिसके द्वारा हम केनी को ढूंढ सकते हैं। यहाँ आउटपुट है:
केनी {1=स्टेन, 2=काइल, 4=कार्टमैन, 5=केनी}
बेशक, हम "पुराने" केनी को हटाने और किसी भी क्रम में एक नया जोड़ने का संचालन कर सकते हैं। वे अनिवार्य रूप से स्वतंत्र हैं। या केवल एक पंक्ति का उपयोग करके अपना कोड छोटा करें:

names.put(5, names.remove(3));
परिणाम निश्चित रूप से वही होगा। इसलिए, जावा हैश मैप में एक कुंजी बदलने का एकमात्र उचित तरीका प्रविष्टि को हटाना और उसी मान को एक नई कुंजी के साथ सम्मिलित करना है। आप इसे अलग तरीके से कर सकते हैं लेकिन यह एक तत्व को जोड़ने और हटाने के बारे में लगभग एक ही कहानी होगी।
टिप्पणियां
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION