クラスにメソッドがあり、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;
}
ほぼリッチが彼の答えで言ったように、あなたのメソッドはMap
にキャストできないHashMap
を返します。これを試して
Map<String, String> map = sensVal.getSensorValue("...");
または、HashMap
を返すようにgetSensorValueメソッドを変更します
また、参照アプローチで渡すこともできます。
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");
}
HashMap sensValues = new HashMap(); Set Set Set =(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);
}