2010-11-04 15 views
8

मैंने मानचित्रों की एक सूची बनाने की कोशिश की। निम्नलिखित कोड में, मैंजावा: हैश मैप्स की एक सूची बनाएं

[{start=1,text=ye}, {start=2,text=no}] 

लेकिन पाने के लिए उम्मीद कर रहा हूँ, मैं केवल

[{start=2,text=no}, {start=2,text=no}] 

मिला पहला नक्शा अधिभावी से बचने के लिए कैसे? यहां मेरा कोड है:

HashMap mMap = new HashMap(); 
ArrayList list = new ArrayList(); 
list.add(new HashMap()); 
mMap.put("start",1); 
mMap.put("text","yes"); 
list.add(mMap); 
mMap.put("start",2); 
mMap.put("text","no"); 
list.add(mMap); 
System.out.println("Final result: " + list); 

धन्यवाद!

==========================

जावा के एक नौसिखिया जो एक प्रक्रिया भाषा पृष्ठभूमि (एसएएस) से आया है के रूप में, मैंने ArrayList, LinkedList, Map, LinkedMap, आदि सीखने और प्रयोग करने में कुछ घंटे बिताए --- मैं इसे काम करने के लिए नहीं मिला। और मुझे समझ में नहीं आता कि मेरे सीमित ज्ञान के साथ क्यों। अब, ये निम्नलिखित उत्तर सभी उत्कृष्ट हैं! उन्होंने जावा में कम से कम मेरे लिए जावा में बहुत महत्वपूर्ण डेटा संरचना की व्याख्या की।

आपको धन्यवाद !!!!

उत्तर

28

मौजूदा प्रविष्टि का उपयोग करने के बजाय आपको प्रत्येक प्रविष्टि के लिए एक नया हैश मैप बनाना होगा। यह काम करेगा:

HashMap mMap = new HashMap(); 
mMap.put("start",1); 
mMap.put("text","yes"); 
list.add(mMap); 
mMap = new HashMap(); // create a new one! 
mMap.put("start",2); 
mMap.put("text","no"); 
list.add(mMap); 

भी, आप list.add(new HashMap()); निकाल सकते हैं कि के रूप में अपनी सूची में एक खाली नक्शा है कि आबादी वाले कभी नहीं कहते हैं।

0

तुम कभी इस मानचित्र के लिए एक संदर्भ बचत कर रहे हैं:

list.add(new HashMap()); 
0

तीन सूची में जोड़ता है। पहला जोड़ एक नए मानचित्र उदाहरण के लिए है; आपने कभी भी कोई मूल्य निर्धारित नहीं किया है। दूसरा जोड़ आप nMap के संदर्भ में पास करते हैं, जिसमें 1 है, हां। तीसरा जोड़ आप एक ही संदर्भ पास करते हैं। तो मानचित्र में अब 3 संदर्भ हैं, एक मानचित्र के पहले जो आपने कभी भी कोई वैल्यू नहीं जोड़ा, अगले 2 उसी मानचित्र पर। यही कारण है कि आप एक ही आउटपुट प्राप्त करते हैं।

1

हाँ, कोड

list.add(new HashMap()); 

के इस टुकड़े से हैश नक्शा कभी नहीं संदर्भित है। तो अंत में आपको 3 वस्तुओं की एक सूची मिलती है, जिनमें से 2 समान हैं। इसकी संभव नहीं है क्योंकि आप पूर्णांकों और स्ट्रिंग्स मिश्रण कर रहे हैं

5

कुछ जो शायद यह भी है, यह उल्लेख के लायक है कि आप HashMap के लिए, तत्व आप सूची में उपयोग के प्रकार परिभाषित करना चाहिए है।

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

यहाँ सुधारा कोड:

Map mMap = new HashMap(); 
List<Map> list = new ArrayList(); 
संबंधित मुद्दे