2010-11-07 17 views
5

मेरा लक्ष्य मानचित्र का नक्शा बनाना है ताकि मैं बाहरी मानचित्र की जानकारी को अपनी कुंजी से पुनर्प्राप्त कर सकूं और फिर अपने "आंतरिक" मानचित्रों को उनकी चाबियों तक पहुंच सकूं।मानचित्रों का नक्शा - आंतरिक मानचित्रों को मानचित्र के रूप में कैसे रखा जाए?

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

अपने विशेषज्ञों से सीखने के लिए, मैं जानना चाहता हूं कि सभी मानचित्र नक्शे के रूप में कैसे रखें। या, क्या यह बिल्कुल संभव है?

import java.util.HashMap; 
import java.util.Iterator; 
import java.util.Map; 
import java.util.Set; 

public class MapExample { 

    public static void main(String[] args) { 

     Map<Object,String> mp=new HashMap<Object, String>(); 

     // adding or set elements in Map by put method key and value pair 
     mp.put(new Integer(2), "Two"); 
     mp.put(new Integer(1), "One"); 
     mp.put(new Integer(3), "Three"); 
     mp.put(new Integer(4), "Four"); 

     Map<Object,String> mp2=new HashMap<Object, String>(); 
     mp2.put(new Integer(2), "Two2"); 
     mp2.put(new Integer(1), "One2"); 
     mp2.put(new Integer(3), "Three2"); 
     mp2.put(new Integer(4), "Four2"); 

     Map<Object,String> mpMaps=new HashMap(); 

     mpMaps.put("Map1",mp); 
     mpMaps.put("Map2",mp2); 

     System.out.println("This is a map of Maps: " + mpMaps); 

     for (int i=0;i<mpMaps.size();i++){ 
        ArrayList a = new ArrayList(mpMaps.keySet()); 
        Object o=a.get(i); 
        System.out.println("all together: " + mpMaps.size() + "each element is: " + o + " value: " + mpMaps.get(o)); 
     }    
    } 
} 

समाधान:

Map<Object,Map<Object,String> 
    Map<String, Object> mpMaps=new HashMap<String, Object>(); 

अमीर और sleske द्वारा

+2

इस बारे में सोचें कि आपके उद्देश्य के लिए एक और संभावित समाधान एक हैशपैप है जिसमें कुंजी के कुंजी जोड़े हैं। इससे पूरी चीज की जटिलता कम हो जाएगी (क्योंकि वास्तविक जेनरिक सिंटैक्स के साथ काफी दर्द होता है)। – Jack

+0

हाँ, यह अच्छा है! धन्यवाद! मेरी ज़रूरत एक परियोजना से आती है जिसे मुझे पहले नक्शे की सूची सॉर्ट करने की आवश्यकता होती है, फिर आगे के उपयोग के लिए प्रत्येक एकल मानचित्र के मानों को पुनर्प्राप्त करें। मानचित्र को फिर से परिभाषित करके – john

उत्तर

7

यहां अपडेट किया गया अद्यतन कोड है, आपको मानचित्रों का नक्शा <String, Object> के रूप में टाइप करने की आवश्यकता है क्योंकि एमपी एक स्ट्रिंग नहीं है जिसे आप <Object, String> नहीं कर सकते हैं।

import java.util.HashMap; 
import java.util.Iterator; 
import java.util.Map; 
import java.util.Set; 
import java.util.ArrayList; 

public class MapExample { 

    public static void main(String[] args) { 

     Map<Object,String> mp=new HashMap<Object, String>(); 

     // adding or set elements in Map by put method key and value pair 
     mp.put(new Integer(2), "Two"); 
     mp.put(new Integer(1), "One"); 
     mp.put(new Integer(3), "Three"); 
     mp.put(new Integer(4), "Four"); 

     Map<Object,String> mp2=new HashMap<Object, String>(); 
     mp2.put(new Integer(2), "Two2"); 
     mp2.put(new Integer(1), "One2"); 
     mp2.put(new Integer(3), "Three2"); 
     mp2.put(new Integer(4), "Four2"); 

     Map<String, Object> mpMaps=new HashMap<String, Object>(); 

     mpMaps.put("Map1",mp); 
     mpMaps.put("Map2",mp2); 

     System.out.println("This is a map of Maps: " + mpMaps); 

     for (int i=0;i<mpMaps.size();i++){ 
        ArrayList<Object> a = new ArrayList<Object>(mpMaps.keySet()); 
        Object o=a.get(i); 
        System.out.println("all together: " + mpMaps.size() + "each element is: " + o + " value: " + mpMaps.get(o)); 
     }    
    } 
} 
+0

मेरे कोड को फिर से काम करने के लिए धन्यवाद !!! – john

5

आपका कोड संकलन नहीं है

यहां मेरे व्यायाम कार्यक्रम है।

एक समस्या यह है यह है:

Map<Object,String> mpMaps=new HashMap(); 
mpMaps.put("Map1",mp); 

यह काम नहीं करेगा, जैसा कि आप एक मानचित्र जिनके मान Strings होने की जरूरत में एक नक्शा (mp) डाल दिया।

Map<Object,Map<Object,String> का उपयोग करें और आपको ठीक होना चाहिए।

+0

, क्या मुझे मानचित्र m = mpMaps.get (कुंजी) द्वारा मानचित्र प्राप्त करना चाहिए? मैंने कोशिश की, लेकिन अभी भी इसे काम नहीं कर सकता ..... – john

+0

हाँ, आपको चाहिए। यदि यह काम नहीं करता है, तो नया कोड जोड़ने के लिए अपना प्रश्न संपादित करें और समझाएं कि वास्तव में क्या काम नहीं करता है। – sleske

+0

बढ़िया! मुझे यह काम मिल गया! अब, वास्तव में समझें कि जावा कितना गंभीर है!कुछ बार, मुझे ग्रोवी में कोड मिल रहा था, लेकिन जब जावा पर कोशिश की गई, तो यह असफल रहा। यह असफल रहा क्योंकि मैंने इस प्रकार के पर्याप्त विवरण नहीं दिए! धन्यवाद! – john

0

मानचित्र mpMaps = new हैश मैप();

mpMaps.put ("Map1", mp);

आपको इस कथन के साथ अपवाद मिलेगा: एमपी के पास मानचित्र टाइप है लेकिन आप इसे स्ट्रिंग के रूप में देख रहे हैं।

यदि मैं आपके प्रश्न को सही समझता हूं, तो आपको या तो कुंजी के रूप में उपयोग की जाने वाली वस्तु के संदर्भ की आवश्यकता होगी या आपको अपनी कुंजी/मानों को डालने की आवश्यकता होगी।

2

मानचित्रों के मानचित्र से बचने के लिए कॉमन्स मल्टीकी का एक वैकल्पिक समाधान उपयोग करना होगा। http://commons.apache.org/collections/apidocs/ पर विवरण देखें और org.apache.commons.collections.keyvalue.MultiKey

-3

Example

इस नक्शे का नक्शा बनाने पर एक उदाहरण है।

+0

यह वास्तव में अधिक उपयोगी होगा अगर यह पाठ था और पाठ की तस्वीर नहीं ... – WillardSolutions

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