2012-02-26 23 views
7

मेरे पास एक लंबी प्रसंस्करण का परिणाम है। मैं इसे सीधे हैश मैप पर पास नहीं करना चाहता हूं और कुछ और गणना करता हूं। मैं इसे सहेजना चाहता हूं और फिर हर बार पुन: उपयोग करना चाहता हूं।आइटम की एक सरणी के साथ हैश मैप शुरू करें?

मूल्यों की मेरी सरणी इस तरह दिखता है:

{0=0, 1=15, 2=70, 3=90, 4=90, 5=71, 6=11, 7=1, 8=61, 9=99, 10=100, 11=100, 12=100, 13=66, 14=29, 15=98, 17=100, 16=100, 19=100, 18=100, 21=62, 20=90, 23=100, 22=100, 25=100, 24=100, 27=91, 26=100, 29=100, 28=68, 31=100, 30=100, 34=83, 35=55, 32=100, 33=100, 38=100, 39=100, 36=100, 37=100, 42=10, 43=90, 40=99, 41=33, 46=99, 47=40, 44=100, 45=100, 48=2} 

वहाँ इन मूल्यों को पास करके एक नया HashMap प्रारंभ करने के लिए एक रास्ता है? प्रारंभ करने में

float[] list={1,2,3}; 
+1

क्या कुंजी वास्तव में लगातार पूर्णांक हैं? –

+0

सरणी में मानों का प्रकार क्या है? मानचित्र की चाबियों और मूल्यों का प्रकार क्या होना चाहिए? –

+0

@BorisStrandjev हां, वे पिछले हैश मैप printlned – Andrew

उत्तर

8

समस्या आप हमें के सामने डाल के लिए सबसे अच्छा समाधान हो जाएगा:

int [] map = 
    {0, 15, 70, 90, 90, 71, 11, 1, 61, 99, 100, 100, 100, 66, 29, 98, 100, 100, 
    100, 100, 90, 62, 100, 100, 100, 100, 100, 91, 68, 100, 100, 100, 100, 100, 
    83, 55, 100, 100, 100, 100, 99, 33, 10, 90, 100, 100, 99, 40, 2}; 

इस सब के बाद नक्शा की तरह है - यह एक सूचकांक को संबंधित मान पर मैप करता है। हालांकि, यदि आपकी चाबियाँ विशिष्ट नहीं हैं तो आप कुछ ऐसा कर सकते हैं:

int [][] initializer = 
    {{0, 0}, {1, 15}, {2, 70}, {3, 90}, {4, 90}, {5, 71}, {6, 11}, {7, 1}, {8, 61}, 
    {9, 99}, {10, 100}, {11, 100}, {12, 100}, {13, 66}, {14, 29}, {15, 98}, 
    {17, 100}, {16, 100}, {19, 100}, {18, 100}, {21, 62}, {20, 90}, {23, 100}, 
    {22, 100}, {25, 100}, {24, 100}, {27, 91}, {26, 100}, {29, 100}, {28, 68}, 
    {31, 100}, {30, 100}, {34, 83}, {35, 55}, {32, 100}, {33, 100}, {38, 100}, 
    {39, 100}, {36, 100}, {37, 100}, {42, 10}, {43, 90}, {40, 99}, {41, 33}, 
    {46, 99}, {47, 40}, {44, 100}, {45, 100}, {48, 2}}; 
Map<Integer, Integer> myMap = new HashMap<Integer, Integer>(); 
for (int i = 0; i < initializer.length; i++) { 
    myMap.put(initializer[i][0], initializer[i][1]); 
} 
2

एक ही रास्ता मूल्यों के साथ एक HashMap आप वस्तु बनाने के बाद put() विधि कई बार का उपयोग करना है: हो सकता है एक सरल सरणी आरंभ की तरह कुछ। ऐसा इसलिए है क्योंकि HashMap को उस प्रदर्शन को प्राप्त करने के लिए मानचित्र में ऑब्जेक्ट्स को व्यवस्थित करने के लिए हैशिंग तंत्र को करने की आवश्यकता है।

1

जहाँ तक मुझे पता है कि आप एक हैशमैप को आसानी से सरणी के रूप में तुरंत चालू नहीं कर सकते हैं।

Map<Integer, Integer> createMap(Integer[] array) { 
    Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 
    for(int i = 0; i < array.length; i++) { 
     map.put(i, array[i]); 
    } 
    return map; 
} 
2

आपका प्रश्न बहुत भ्रामक है:

आप क्या कर सकते हैं, एक utitlity विधि लिख सकते हैं और उपयोग करें कि एक नक्शे के दृष्टांत है। यह आप चाहते हैं कि किसी मानचित्र की सामग्री को किसी अन्य मानचित्र पर कॉपी करना है, putAll विधि का उपयोग करें।

Map<Integer, Integer> newMap = new HashMap<Integer, Integer>(); 
newMap.putAll(oldMap); 

या सीधे प्रतिलिपि निर्माता:

Map<Integer, Integer> newMap = new HashMap<Integer, Integer>(oldMap); 
+0

या निर्माता का उपयोग करें: 'हैश मैप (मानचित्र एम बढ़ाता है) ':) –

+0

बेशक। मैं अपना उत्तर संपादित करूंगा :-) –

+0

पुराना मैप क्या डेटा प्रकार है? –

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