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

リッチが彼の答えで言ったのとほぼ同じですが、あなたのメソッドは aMapにキャストできない a を返しますHashMap。これを試して

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

または、getSensorValue メソッドを変更して、HashMap

于 2013-04-08T08:49:43.257 に答える
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 に答える
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 に答える