Wednesday 15 April 2015

java - Understand interface Map -


मैं नक्शा डेटास्ट्रक्चर को सीख रहा हूं, मुझे entrySet () सेट & lt; Map.Entry & lt; K, V & gt; & gt; मानचित्र इंटरफ़ेस के भीतर क्या इसे नेस्टेड स्व संदर्भित माना जाता है? संदर्भ के लिए, यह java.util.Map & lt; K, V & gt; इंटरफ़ेस की परिभाषा से एक अंश है:

  सार्वजनिक इंटरफ़ेस मानचित्र & lt; K, V & gt; {सेट & lt; नक्शा। प्रविष्टि & lt; K, V & gt; & gt; entrySet (); ...}    

क्या इसे नेस्टेड स्वयं संदर्भित माना जाता है?

नहीं यह केवल यह कहता है कि इस पद्धति के परिणाम के रूप में मानचित्र जो भी हो, एक ऐसा ऑब्जेक्ट उदाहरण होना चाहिए, जो सेट इंटरफ़ेस का पालन करता है, जो इस मैप की सामग्री को दर्शाता है < / कोड> प्रविष्टियां यह .keySet () के साथ समान है।

यह समझ में आता है कि दोनों सेट s, क्योंकि मैप अद्वितीय () हैं, और ये कुंजियाँ हैं (लेकिन चाबियाँ, आप यह सुनिश्चित करने के लिए जिम्मेदार हैं कि .equals () / .hashCode () सम्मानित है)।

फिर भी, आपको सावधान रहना होगा। इन दोनों विधियों के लिए, जवाडॉक कहता है:

सेट को मानचित्र के द्वारा समर्थित किया जाता है, इसलिए नक्शे में परिवर्तन सेट में दिखाई देते हैं, और इसके विपरीत।

और यदि आप सावधान नहीं हैं, तो यह परेशानी पैदा कर सकता है।

इस उदाहरण को देखो:

  सार्वजनिक स्थिर शून्य मुख्य (अंतिम स्ट्रिंग ... आर्ग्स) {अंतिम मानचित्र & lt; स्ट्रिंग, स्ट्रिंग & gt; नक्शा = नया हैशमैप & lt; & gt; (); Map.put ("हैलो", "विश्व"); Map.put ("foo", "bar"); // एक नक्शा प्रविष्टि अंतिम नक्शा बनाएँ। प्रविष्टि & lt; स्ट्रिंग, स्ट्रिंग & gt; एंट्री = नया ऐबस्ट्रैक्टमैप। सिंपलइंट्री & lt; & gt; ("एफू", "बार"); // सेट नक्शा से इसे निकालें। एंटीसेट ()। निकालें (प्रविष्टि); System.out.println ("प्रविष्टि हटाने के बाद:" + मानचित्र); // एक प्रमुख मानचित्र निकालें। कुंजीसेट ()। निकालें ("हैलो"); System.out.println ("कुंजी को हटाने के बाद:" + मानचित्र); }   

परिणाम:

  प्रविष्टि हटाने के बाद: {hello = world} कुंजी को निकालने के बाद: {}    

No comments:

Post a Comment