Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查hashmap中的值是否已存在_Java_Hashmap_Duplicates - Fatal编程技术网

Java 检查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

我创建了一个包含字符串值的hashMap。我希望每次向map添加一个新值时,检查hashmap中是否已经存在。我已经定义了

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()))