2012-10-30 13 views
10

मैं हाल ही में हैशमैप्स के बारे में सीख रहा हूं लेकिन मेरे पास एक सवाल है कि मुझे स्पष्ट उत्तर नहीं मिल रहा है। के बीच मुख्य अंतर -हैश मैप्स बनाने के विभिन्न तरीके

HashMap hash1 = new HashMap(); 

बनाम

HashMap<,>hash1 = new HashMap <,>(); //Filled in with whatever Key and Value you want. 

मैंने सोचा था कि जब आप एक HashMap यह कुंजी और मान की आवश्यकता है परिभाषित करते हैं। कोई भी सहायताकाफी प्रशंसनीय होगी। धन्यवाद।

+2

जो भाषा? – Jasper

+0

साथ ही, चर को एक मानचित्र घोषित करने की अच्छी आदत है - अधिक जानकारी के लिए [इस पोस्ट] पर एक त्वरित नज़र डालें (http://stackoverflow.com/questions/1348199/java-hashmap-vs-map-objects)। –

+0

जावा, और पोस्ट के लिए धन्यवाद। – StaticGamedude

उत्तर

9

यदि आप हैश मैप के प्रकार निर्दिष्ट नहीं करते हैं, तो आपको Java generics पर एक नज़र रखना चाहिए, दोनों कुंजी और मान Object प्रकार होंगे।

इसलिए, यदि आप Integer कुंजी और उदाहरण के लिए String मूल्यों के साथ एक HashMap हैं:

HashMap<Integer, String> hashMap= new HashMap<Integer, String>(); 
+1

आह अब मैं देखता हूं, इस उत्तर में मदद मिली, धन्यवाद। – StaticGamedude

+0

आपका स्वागत है @StaticGamedude, क्या आप इसे उत्तर के रूप में चिह्नित करने पर विचार कर सकते हैं? सहायक वोटों के तहत यह चेक मार्क :) – HericDenis

3

key और value प्रकार निर्दिष्ट संकलन समय टाइपिंग प्रवर्तन सक्षम करने से अधिक से अधिक प्रकार के सुरक्षा के लिए अनुमति देता है।

यह कोड लिखना आसान बनाता है जो गलती से कुंजी और मूल्य प्रकारों को मिश्रित नहीं करता है, और उस कोड की मात्रा को कम करता है जिसे आपको कोड में स्पष्ट रूप से घोषित करना होगा।

हालांकि, यह जानना महत्वपूर्ण है कि इन प्रकार-चेक केवल संकलन-समय हैं, यानी एप्लिकेशन चलने के बाद, JVM आपको कुंजी और मानों के लिए किसी भी प्रकार का उपयोग करने की अनुमति देगा।

+0

+1 संकलन-समय और रन-टाइम मतभेदों के बारे में अच्छी व्याख्या के लिए +1। – HericDenis

1

-Generics कक्षाएं, इंटरफेस, तरीकों, चर आदि के लिए निहित किया जा सकता है .. लेकिन सबसे महत्वपूर्ण कारण जो के लिए अपने इस्तेमाल किया Collectionअधिक प्रकार सुरक्षित कर रही है।

-Generics सुनिश्चित करें कि वस्तु के केवल विशिष्ट प्रकार प्रवेश करती है और बाहरCollections की बात आती हैं।

- एक प्रक्रिया Erasure रूप में जाना जाता है कि वहाँ इसके अलावा इसके लायक उल्लेख,

->Erasure एक ऐसी प्रक्रिया जिसके type parameters और type argumentsसंकलक द्वारा सामान्य वर्गों और इंटरफेस से हटा रहे हैं बनाने यह वापस संगत उन कोडों के साथ जहां जेनिक्स के बिना लिखा गया है।

J2SE < 5:

तो,

HashMap<String, Integer> map = new HashMap<String, Integer>();

Raw type का हो जाता है,

HashMap map = new HashMap();

15

उन विकल्पों आप कर रहे हैं।0 शैली:

Map map = new HashMap(); 

J2SE 5.0+ शैली (generics के उपयोग):

Map<KeyType, ValueType> map = new HashMap<KeyType, ValueType>(); 

Google Guava शैली (छोटे और अधिक लचीला):

Map<KeyType, ValueType> map = Maps.newHashMap(); 
संबंधित मुद्दे