HashMap返回方法

时间:2013-04-08 08:36:29

标签: java android 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。

5 个答案:

答案 0 :(得分:12)

您不必复制地图。只需尝试使用返回的引用:

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

答案 1 :(得分:6)

您的方法需要返回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;
}

答案 2 :(得分:4)

几乎Rich在他的回答中说,但你的方法返回一个Map,不能强制转换为HashMap。试试这个

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

或者更改你的getSensorValue方法,使其返回HashMap

答案 3 :(得分:0)

HashMap sensValues = new HashMap();  设置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 :(得分:0)

您也可以尝试通过引用aproach传递,

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

   }