2013-08-13 8 views
8

में दृष्टांत के लिए नक्शे <स्ट्रिंग, सूची > मैं जावा में Map<String, List<String>> का दृष्टांत चाहते हैं, रास्ता जावा

मैं

Map<String, List<String>> foo = new <String, List<String>>(); 

और उन्हें काम के

Map<String, List<String>> foo = new <String, ArrayList<String>>(); 

कोई भी कोशिश की । क्या कोई जावा में इस मानचित्र को तुरंत चालू करने के बारे में जानता है?

उत्तर

16
new HashMap<String, List<String>>(); 

या gparyani के रूप में टिप्पणी की:

new HashMap<>(); // type inference 

नोट: प्रत्येक प्रविष्टि एक मूल्य के रूप में एक instantiated सूची दिए जाने की जरूरत है। आप ("myKey") नहीं प्राप्त कर सकते हैं। ("Some_string_for_this_key") जोड़ें; पहली बार आपको() से एक सूची मिलती है।

तो, एक सूची प्राप्त करें, जांचें कि यह शून्य है या नहीं।

यदि यह शून्य है, तो एक नई सूची बनाएं, इसमें स्ट्रिंग जोड़ें, सूची को वापस रखें। यदि यह शून्य के अलावा कुछ भी है, तो इसमें जोड़ें, या जो भी आप चाहते हैं उसे करें।

+0

...या आप केवल 'नया हैश मैप <>();' जावा 7 – gparyani

+1

के रूप में कह सकते हैं धन्यवाद, भूल गया नक्शा भी एक इंटरफ़ेस है ... –

12

आप कक्षा का उल्लेख करना भूल गए। Map यहां संदर्भ प्रकार है और इंटरफ़ेस है। HashMap बराबर के दूसरी तरफ वास्तविकऑब्जेक्ट का संदर्भ foo संदर्भित और निर्दिष्ट किया गया है।

Map<String, List<String>> foo = new HashMap<String, List<String>>(); 

वास्तविक प्रकार निर्दिष्ट (यहाँ HashMap) संदर्भ प्रकार (यहाँ Map) यानी आबंटित होना चाहिए अगर संदर्भ के प्रकार के एक इंटरफ़ेस है, वस्तु के प्रकार यह को लागू करना चाहिए। और, यदि संदर्भ का प्रकार कक्षा है, तो ऑब्जेक्ट का प्रकार या तो वर्ग या उसके उप प्रकार यानी यह विस्तार से होना चाहिए।

जावा 7 के बाद से, आप

Map<String, List<String>> foo = new HashMap<>(); 

इन्स्टेन्शियशन का आपका दूसरा तरीका की तरह एक आशुलिपि का उपयोग कर सकते नहीं सिफारिश की है। List का उपयोग करने के लिए चिपकें जो इंटरफ़ेस है।

// Don't bind your Map to ArrayList 
new TreeMap<String, ArrayList<String>>(); 

// Use List interface type instead 
new TreeMap<String, List<String>>(); 
5

मानचित्र एक इंटरफ़ेस है। आपको जावा को बताना होगा कि मैक क्लास कंक्रीट जिसे आप तुरंत चालू करना चाहते हैं।

Map<String, List<String>> foo = new HashMap<String, List<String>>(); 

या

Map<String, List<String>> foo = new TreeMap<String, List<String>>(); 

आदि