2016-11-06 6 views
5

मैं नीचे दिए गए कोड है: पहली बार एक मानचित्र बनाने के बजायArrays.as भी नक्शे के लिए सूची?

Map<String, Map<Double, String>> map = new HashMap<>(); 
Map<Double,String> Amap = new HashMap<>(); 
map.put(getValuesTypes.FUT(), HERE); 

और "यहाँ" पर डाल, मैं जैसे मैं इतना है कि मैं कर सकता हूँ एक List वहाँ Arrays.asList(...) साथ इस्तेमाल कर सकते हैं एक समारोह के लिए देख रहा हूँ बस "Here" ?.asMap({1.0,"A"}, {2.0,"B"})

+0

'{1.0," ए "}' एक ऑब्जेक्ट सरणी है, मानचित्र नहीं –

+1

जावा 9 के साथ, आप अपरिवर्तनीय मानचित्र बनाने के लिए संग्रह फैक्ट्री विधियों का उपयोग करने में सक्षम होंगे, http://download.java.net/ देखें जावा/जेडीके 9/डॉक्स/एपीआई/जावा/यूज/मैप.html # के-केवी- और इसके रूप। – Tordanik

उत्तर

4

में प्रवेश आप HashMap इस तरह प्रारंभ कर सकते हैं।

new HashMap<Double, String>() { 
    { 
     put(1.0, "ValA"); 
     put(2.0, "ValB"); 
    } 
}; 
+1

सावधान रहें कि इसमें अतिरिक्त मानचित्र उदाहरण बनाने की छिपी लागत है। इसे डबल ब्रेस प्रारंभिक कहा जाता है। – jakubbialkowski

1

इस तरह से मानचित्र को आरंभ करने के लिए कोई शाब्दिक नहीं है। लेकिन आप स्पॉट पर उत्पन्न एक अज्ञात वर्ग का उपयोग कर सकते हैं:

map.put(getValuesTypes.FUT(), new HashMap<Double, String>() {{ 
    put(1.0, "A"); 
    put(2.0, "B"); 
}}); 

हालांकि इसकी अनुशंसा नहीं की जाती है। मैं उपयोग करने के लिए सुझाव है कि अमरूद के ImmutableMap:

map.put(getValuesTypes.FUT(), ImmutableMap.<Double, String>of(1.0, "A", 2.0, "B")); 

जोड़े की एक संख्या 5 से अधिक है, तो आप का उपयोग करना चाहिए उनके builder:

map.put(getValuesTypes.FUT(), 
     ImmutableMap.<Double, String>builder().put(1.0, "A")/* 5+ puts */.build()); 
+0

अतिरिक्त libs आयात करने के लिए की जरूरत के बिना, आप 'java.util.Collections' तो' Collections.unmodifiableMap (myHashMapInstance) की तरह उपयोग कर सकते हैं ' – Jaxon

2

साथ Guava

Map<Double, String> map = ImmutableMap.of(1.0, "A", 2.0, "B"); 
0

आप केवल कर सकते हैं एक अज्ञात वर्ग का उपयोग कर एक नया नक्शा शुरू करें। अर्थात

new HashMap<K, V>() {{ put(key, value); put(key, value); }};

1

अमरूद के ImmutableMap.of(..) इस दिशा में मदद कर सकते हैं:

ImmutableMap.of(1, "a"); 

JDK में वहाँ केवल Collections.singletonMap(..) है, लेकिन यह आप एक एकल जोड़ी के साथ सिर्फ एक नक्शा प्रदान करता है।

guava project में में Maps.asMap(Object... varArgs) रखने के लिए discussion था, बिट इसे रोक दिया गया था। तो, ImmutableMap.of (...) जाने का रास्ता है।

संबंधित मुद्दे