जवाबों:
आप जावा में सामान्य तर्कों के रूप में आदिम प्रकारों का उपयोग नहीं कर सकते। इसके बजाय उपयोग करें:
Map<String, Integer> myMap = new HashMap<String, Integer>();
साथ स्वत: मुक्केबाजी / unboxing वहाँ कोड में थोड़ा अंतर है। ऑटो-बॉक्सिंग का मतलब है कि आप लिख सकते हैं:
myMap.put("foo", 3);
के बजाय:
myMap.put("foo", new Integer(3));
ऑटो-बॉक्सिंग का अर्थ है कि पहला संस्करण दूसरे में अंतर्निहित है। ऑटो-अनबॉक्सिंग का मतलब आप लिख सकते हैं:
int i = myMap.get("foo");
के बजाय:
int i = myMap.get("foo").intValue();
अंतर्निहित कॉल का intValue()
अर्थ है कि यदि कुंजी नहीं मिली है तो यह एक NullPointerException
उदाहरण के लिए उत्पन्न करेगा :
int i = myMap.get("bar"); // NullPointerException
कारण है प्रकार का क्षरण । इसके विपरीत, C # सामान्य प्रकार में, रनटाइम पर बनाए नहीं रखा जाता है। वे आपको ऐसा करने से बचाने के लिए स्पष्ट कास्टिंग के लिए "सिंटैक्टिक शुगर" हैं:
Integer i = (Integer)myMap.get("foo");
आपको एक उदाहरण देने के लिए, यह कोड पूरी तरह से कानूनी है:
Map<String, Integer> myMap = new HashMap<String, Integer>();
Map<Integer, String> map2 = (Map<Integer, String>)myMap;
map2.put(3, "foo");
GNU ट्रोव इसका समर्थन करते हैं लेकिन जेनरिक का उपयोग नहीं कर रहे हैं। http://trove4j.sourceforge.net/javadocs/gnu/trove/TObjectIntHashMap.html
आप में आदिम प्रकारों का उपयोग नहीं कर सकते HashMap
। int
, या double
काम नहीं करते। आपको इसके संलग्न प्रकार का उपयोग करना होगा। एक उदाहरण के लिए
Map<String,Integer> m = new HashMap<String,Integer>();
अब दोनों वस्तुएं हैं, इसलिए यह काम करेगा।
int एक आदिम प्रकार है, आप पढ़ सकते हैं कि जावा में एक आदिम प्रकार का क्या मतलब है , और एक नक्शा एक इंटरफ़ेस है जो वस्तुओं के लिए इनपुट के रूप में है:
public interface Map<K extends Object, V extends Object>
ऑब्जेक्ट का मतलब एक वर्ग है, और इसका मतलब यह भी है कि आप एक अन्य वर्ग बना सकते हैं जो उससे निकलता है, लेकिन आप एक ऐसा वर्ग नहीं बना सकते हैं जो इंट से निकलता है। इसलिए आप एक ऑब्जेक्ट के रूप में इंट चर का उपयोग नहीं कर सकते हैं। मैं आपकी समस्या के लिए टो समाधान है:
Map<String, Integer> map = new HashMap<>();
या
Map<String, int[]> map = new HashMap<>();
int x = 1;
//put x in map
int[] x_ = new int[]{x};
map.put("x", x_);
//get the value of x
int y = map.get("x")[0];
आप सामान्य प्रकार के संदर्भों में संदर्भ प्रकार का उपयोग कर सकते हैं, न कि आदिम प्रकार का। इसलिए यहां आपको उपयोग करना चाहिए
Map<String, Integer> myMap = new HashMap<String, Integer>();
और के रूप में स्टोर मूल्य
myMap.put("abc", 5);