2013-04-08 98 views
6

我在類中有一個方法,它初始化一個HashMap並在其中放置一些鍵和值,然後該方法返回HashMap。我如何檢索返回的HashMap?HashMap返回方法

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應用程序崩潰工作。 重點是以某種方式檢索返回的HashMap。

+0

你檢查你的logcat的? – Zyerah 2013-04-08 08:37:47

+1

發佈你的異常(你可以在eclipse中的logcat輸出中找到它) – Dodge 2013-04-08 08:39:02

回答

12

你不應該複製地圖。只是嘗試使用返回的參考:

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

您的方法需要返回一個Map<String,String>。在您發佈的代碼中,Map sensorValues從不初始化。

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

HashMap sensValues = new HashMap(); Set mapSet =(Set)sensValues.entrySet();

Iterator mapIterator = 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。試試這個

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

或可選擇地改變你的getSensorValue方法,使其返回HashMap

0

您也可以嘗試通過參考的形式給出傳球,

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"); 

    }