为什么自定义的getkey()函数在java中不起作用?

时间:2018-04-03 10:06:11

标签: hashmap

我使用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));
    }

1 个答案:

答案 0 :(得分:1)

其中一个原因可能是if:

if(history_map.get(it.next()).equals(value)) {
      return it.next();
}

如果找到匹配项,则在执行return语句时再次调用迭代器next()方法。如果map由单个键组成,那么它将抛出java.util.NoSuchElementException。