簡體   English   中英

HashMap 返回方法

[英]HashMap return method

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

你不應該復制地圖。 只需嘗試使用返回的引用:

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

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

幾乎就像 Rich 在他的回答中所說的那樣,但是您的方法返回一個無法轉換為HashMapMap 嘗試這個

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

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

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

你也可以嘗試通過引用方法,

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

   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM