2013-04-08 14 views
6

मेरे पास एक कक्षा में एक विधि है, जो हैश मैप शुरू करता है और इसमें कुछ चाबियाँ और मान डालता है, तो विधि हैश मैप लौटाती है। मैं लौटा हुआ हैश मैप कैसे प्राप्त कर सकता हूं?हैश मैप रिटर्न विधि

public Map<String, String> getSensorValue(String sensorName) { 

registerSensor(sensorName); 
sensorValues.put("x","25"); 
sensorValues.put("y","26"); 
sensorValues.put("z","27"); 
return sensorValues; 
} 

और यहाँ मैं एक और वर्ग से इस विधि कॉल:

public static HashMap<String, String> sensValues = new HashMap<String, String>(); 

AllSensors sensVal = new AllSensors(); 
sensValues.putAll(sensVal.getSensorValue("orientation")); 
String something = sensValues.get("x"); 

लेकिन यह इस तरह से

sensValues.putAll(sensVal.getSensorValue("orientation")); 

मेरी Android एप्लिकेशन दुर्घटना बनाता है में काम नहीं करता। बिंदु किसी भी तरह से वापस हैश मैप को पुनः प्राप्त करने के लिए है।

+0

आप अपने logcat जांच की है? – Zyerah

+1

अपना अपवाद पोस्ट करें (आप इसे ग्रहण में अपने लॉगकट आउटपुट में पा सकते हैं) – Dodge

उत्तर

12

आपको मानचित्र को कॉपी करने की आवश्यकता नहीं है। बस लौटे संदर्भ का उपयोग करके देखें:

Map<String, String> map = sensVal.getSensorValue("..."); 
5

आपका विधि एक Map<String,String> वापस जाने के लिए की जरूरत है। आपके द्वारा पोस्ट किए गए कोड में, Map सेंसर वैल्यू कभी प्रारंभ नहीं किया गया है।

public Map<String, String> getSensorValue(String sensorName) { 
    Map<String,String> sensorValues = new HashMap<String,String>(); 
    registerSensor(sensorName); 
    sensorValues.put("x","25"); 
    sensorValues.put("y","26"); 
    sensorValues.put("z","27"); 
    return sensorValues; 
} 
0

हैश मैप सेंसव्यू = नया हैश मैप(); मानचित्र सेट करें सेट करें (सेट) sensValues.entrySet();

इटरेटर नक्शाइटरेटर = mapSet.iterator();

  while (mapIterator.hasNext()) { 
        Map.Entry mapEntry = (Map.Entry) mapIterator.next(); 
        String keyValue = (String) mapEntry.getKey(); 
        String value = (String) mapEntry.getValue(); 
        System.out.println("Key : " + keyValue + "= Value : " + value); 
      } 
4

लगभग जैसे रिच अपने जवाब में कहा है, लेकिन अपने विधि एक Map जो एक HashMap में ढाला नहीं जा सकते हैं देता है। इतना है कि यह एक HashMap

0

रिटर्न इसके अलावा, आप संदर्भ aproach से गुजरती कोशिश कर सकते हैं कोशिश इस

Map<String, String> map = sensVal.getSensorValue("..."); 

या वैकल्पिक रूप से अपने getSensorValue पद्धति को बदलने,

void main(){ 

    public static HashMap<String, String> sensValues = new HashMap<String, String>(); 

    AllSensors sensVal = new AllSensors(); 

    sensVal.setSensorValue(sensValues ,"orientation"); 

    String something = sensValues.get("x"); 
} 

    public void setSensorValue(Map<String, String> sensorValues, String sensorName) { 

     registerSensor(sensorName); 

     sensorValues.put("x","25"); 

     sensorValues.put("y","26"); 

     sensorValues.put("z","27"); 

    }