我尝试按以下方式进行:
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
。它没有帮助。
答案 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。