Java 检查hashmap中的值是否已存在
我创建了一个包含字符串值的hashMap。我希望每次向map添加一个新值时,检查hashmap中是否已经存在。我已经定义了Java 检查hashmap中的值是否已存在,java,hashmap,duplicates,Java,Hashmap,Duplicates,我创建了一个包含字符串值的hashMap。我希望每次向map添加一个新值时,检查hashmap中是否已经存在。我已经定义了 final HashMap map=new HashMap(); map.put(key,myURL.toString()) 如何循环hashmap以检查是否存在重复项?map.containsValue方法是您需要的。查看检查类javadocs,您将看到有两个方法包含key和containsvalue map.containsKey(键) map.containsValu
final HashMap map=new HashMap();
map.put(key,myURL.toString())代码>
如何循环hashmap以检查是否存在重复项?map.containsValue方法是您需要的。查看检查类javadocs,您将看到有两个方法包含key和containsvalue
map.containsKey(键)
map.containsValue(val)
如果坚持迭代,请执行以下操作:
Iterator<Entry<String, String>>iterator=map.entrySet();
while(iterator.hasNext()){
final Entry<String, String>next=iterator.next();
next.getKey(); next.getValue();
}
iteratoriator=map.entrySet();
while(iterator.hasNext()){
final Entrynext=iterator.next();
next.getKey();next.getValue();
}
指定人:
简单:
return map.containsValue(myURL.toString());
比如说。或者,使用java8流:
return map.values().stream().anyMatch(v -> v.equals(myURL.toString()))
但是,当你要求高效的解决方案时,我建议你使用老式的非流式版本。因为第二个版本最有可能使用明显更多的CPU周期
只有当你的地图有无数的条目,并且你只关注响应时间时,也许使用parallelStream()
可以更快地给你答案说到效率,这种数据结构的存在证明了效率低下和糟糕的设计containsValue(V)
是您正在寻找的方法如果键和值之间存在一对一的关系,则使用BiMap会更有效。哈希映射的主要目的是防止O(n)回迁。此外,通过阅读API文档可以很容易地回答这个问题。学会阅读它们,学会爱它们。
return map.values().stream().anyMatch(v -> v.equals(myURL.toString()))