7

我在一个类中有一个方法,它初始化一个 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。

4

5 回答 5

12

你不应该复制地图。只需尝试使用返回的参考:

Map<String, String> map = sensVal.getSensorValue("...");
于 2013-04-08T08:41:20.677 回答
6

您的方法需要返回一个Map<String,String>. 在您发布的代码中,MapsensorValues 从未初始化。

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;
}
于 2013-04-08T08:42:40.870 回答
4

几乎就像 Rich 在他的回答中所说的那样,但是您的方法返回 aMap不能强制转换为 a HashMap。试试这个

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

或者更改您的 getSensorValue 方法,使其返回一个HashMap

于 2013-04-08T08:49:43.257 回答
0

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

迭代器 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);
            }
于 2013-04-08T08:43:29.437 回答
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");

   }
于 2013-04-08T09:17:36.397 回答