【发布时间】:2017-10-29 21:30:00
【问题描述】:
- 我有一个 keyStore,它可以包含一个或多个键值对
- 我有一个 nodeMap,它可以包含一个或多个键值对
- keyStore 中的所有键都必须存在于 nodeMap 中,并且 keyStore 中的所有键值对必须在 nodeMap 中匹配才能返回 true
例如:
keyStore {key1=>value1}
nodeMap {key1=>value1, key2=>value2}
return true
----
keyStore {key1=>value1, key2=>value2}
nodeMap {key1=>value1, key2=>value2}
return true
----
keyStore {key1=>value1, key3=>value3}
nodeMap {key1=>value1, key2=>value2}
return false;
----
keyStore {key1=>value1, key3=>value3}
nodeMap {key1=>value1, key2=>value2, key3=>value3}
return true;
代码:
private boolean checkForMatch(NamedNodeMap nodeMap, Map<String, String> keyStore)
{
boolean foundMatch = false;
for (int i = 0; i < nodeMap.getLength(); i++)
{
Node node = nodeMap.item(i);
String nodeName = node.getNodeName();
if (keyStore.containsKey(nodeName))
{
if (keyStore.get(nodeName).contains(node.getNodeValue()))
{
foundMatch = true;
}
else
{
foundMatch = false;
break;
}
}
}
return foundMatch;
}
这不起作用有几个原因,例如,当 nodeMap 包含许多键值对但 keyStore 仅包含一个键值对时,而第一个条件失败然后循环中断,而不是继续。
【问题讨论】:
-
你在问一个关于 keyStore 的问题,所以你的循环首先不应该针对 nodeMap 循环。一般来说,这是一个 forall 关系,因此您可以检查人们将如何实现它。
标签: java for-loop boolean boolean-logic