我需要检查map是否包含列表中的任何键,如果它包含,则返回第一个匹配值。我想到的简易方法是做两个嵌套的循环:查找映射是否包含列表中的任何键的有效方法
Map<String, String> fields = new HashMap<String, String>();
fields.put("a", "value a");
fields.put("z", "value z");
String[] candidates = "a|b|c|d".split("|");
for (String key : fields.keySet()){
for (String candidate : candidates) {
if (key.equals(candidate)){
return fields.get(key);
}
}
}
是否有更好和更有效的方式,可能是一个依赖于Java标准库?
这是有效的,因为它可以得到的,但是如果'null'是'Map'中的允许值,它可能会变得棘手。 –
有趣...我的理解是否正确,只是使用'map。get()'一次而不是'map.contains()+ map.get()',因为这会避免第二次查找?那很整齐! – ccpizza
@NimChimpsky retainAll是descructive。 –