我使用getKey()
函数从HashMap<ArrayList<String>,String>
变量获取密钥。
但它没有用,我完全不知道为什么它不起作用。
private ArrayList<String> getKey(String value) {
Iterator<ArrayList<String>> it=history_map.keySet().iterator();
while(it.hasNext()) {
if(history_map.get(it.next()).equals(value)) {
return it.next();
}
}
return null;
}
值是“功能”。并且history_map
的密钥类型为ArrayList<String>
。
所以我找到了比较密钥的每个值的价值。有什么问题?
它始终返回null
值。
我在下面使用此功能。
public void setFunction(String function) {
getKey("Function").add(function);
}
public void setEnergyLevel(int energy) {
getKey("EnergyLevel").add(String.valueOf(energy));
}
public void setTemperature(int temp) {
getKey("Temperature").add(String.valueOf(temp));
}
public void setHumidity(int hum) {
getKey("Humidity").add(String.valueOf(hum));
}
public void setSpeed(int speed) {
getKey("Fastest speed").add(String.valueOf(speed));
}
答案 0 :(得分:1)
其中一个原因可能是if:
if(history_map.get(it.next()).equals(value)) {
return it.next();
}
如果找到匹配项,则在执行return语句时再次调用迭代器next()方法。如果map由单个键组成,那么它将抛出java.util.NoSuchElementException。