hash1एक डिक्टेट के रूप में घोषणा करते हुए HashMap<String, ?>कि वैरिएबल hash1किसी की भी HashMapकुंजी Stringऔर किसी भी प्रकार के मूल्य को पकड़ सकता है ।
HashMap<String, ?> map;
map = new HashMap<String, Integer>();
map = new HashMap<String, Object>();
map = new HashMap<String, String>();
उपरोक्त सभी मान्य है, क्योंकि चर map उन हैश मानचित्रों में से किसी को भी संग्रहीत कर सकता है। वह चर परवाह नहीं करता है कि वह किस प्रकार का हैशमैप रखता है।
एक वाइल्डकार्ड के बाद करता है नहीं , फिर भी, आप अपने नक्शे में वस्तु के किसी भी प्रकार के कर दिया करते हैं। वास्तव में, उपरोक्त हैश मैप के साथ, आप mapचर का उपयोग करके इसमें कुछ भी नहीं डाल सकते हैं :
map.put("A", new Integer(0));
map.put("B", new Object());
map.put("C", "Some String");
उपरोक्त सभी विधि कॉलों का संकलन समय-समय पर होगा, क्योंकि जावा को नहीं पता होता है कि हाशप के मूल्य प्रकार के अंदर क्या mapहै।
आप अभी भी हैश मानचित्र से एक मान प्राप्त कर सकते हैं। यद्यपि आप "मूल्य के प्रकार को नहीं जानते हैं," (क्योंकि आपको नहीं पता है कि आपके चर के अंदर किस प्रकार का हैश मैप है), आप कह सकते हैं कि सब कुछ उप-वर्ग का है Objectऔर इसलिए, जो भी आप नक्शे से बाहर निकलते हैं प्रकार की वस्तु होगी:
HashMap<String, Integer> myMap = new HashMap<>();// This variable is used to put things into the map.
myMap.put("ABC", 10);
HashMap<String, ?> map = myMap;
Object output = map.get("ABC");// Valid code; Object is the superclass of everything, (including whatever is stored our hash map).
System.out.println(output);
कोड का उपरोक्त ब्लॉक कंसोल में 10 प्रिंट करेगा।
तो, खत्म करने के लिए HashMapवाइल्डकार्ड के साथ उपयोग करें जब आपको परवाह नहीं है (यानी, इससे कोई फर्क नहीं पड़ता) HashMapउदाहरण के लिए, क्या प्रकार हैं:
public static void printHashMapSize(Map<?, ?> anyMap) {
// This code doesn't care what type of HashMap is inside anyMap.
System.out.println(anyMap.size());
}
अन्यथा, उन प्रकारों को निर्दिष्ट करें जिनकी आपको आवश्यकता है:
public void printAThroughZ(Map<Character, ?> anyCharacterMap) {
for (int i = 'A'; i <= 'Z'; i++)
System.out.println(anyCharacterMap.get((char) i));
}
उपरोक्त विधि में, हमें यह जानना होगा कि मानचित्र की कुंजी एक है Character, अन्यथा, हम यह नहीं जान पाएंगे कि इससे मान प्राप्त करने के लिए किस प्रकार का उपयोग करना है। toString()हालाँकि, सभी वस्तुओं में एक विधि होती है, इसलिए मानचित्र में इसके मूल्यों के लिए किसी भी प्रकार की वस्तु हो सकती है। हम अभी भी मूल्यों को प्रिंट कर सकते हैं।