如何在HashMap的所有键上循环?

时间:2010-03-23 15:47:04

标签: java loops iterator hashmap

我尝试按以下方式进行:

public String getValue(String service, String parameter) {
    String inputKey = service + ":" + parameter;
    Set keys = name2value.keySet();
    Iterator itr = keys.iterator();
    while (itr.hasNext()) {     
        if (inputKey.equal(itr.next())) {
            return name2value.get(inputKey);
        }
        return "";
    }
}

我收到一条错误消息:找不到符号method.equal(java.lang.Object)。

我认为这是因为itr.next()不被视为字符串。我怎么解决这个问题?我尝试将Set keys替换为Set<String> keys。它没有帮助。

2 个答案:

答案 0 :(得分:7)

您想要的方法称为equals而不是equal

但是您的代码中还存在一些其他缺陷。

首先,您不应循环遍历Map中的所有密钥以查找特定密钥,只需使用get和/或containsKey

第二个return也是错误的。如果第一个键不匹配,它将返回""。如果您希望在密钥的 none 匹配时返回"",则return应该在方法结束时返回,例如:

public String getValue(String service, String parameter) {
    String inputKey = service + ":" + parameter;
    String value = name2value.get(inputKey);
    if (value == null) {
        return "";
    } else {
        return value;
    }
}

答案 1 :(得分:0)

Firstoff,方法是equals() 其次,将itr.next()转换为字符串而不是Set。