检查hashmap中的值是否已存在

时间:2014-05-13 13:24:24

标签: java hashmap duplicates

我创建了一个包含String值的hashMap。我想每次添加一个新值来映射以检查hashmap中是否已存在。我已经定义了

final HashMap<String, String> map = new HashMap<String, String>(); map.put(key, myURL.toString());

我如何循环遍历hashmap以检查是否存在重复?

6 个答案:

答案 0 :(得分:13)

简单:

return map.containsValue(myURL.toString());
例如,

。或者,使用java8流:

return map.values().stream().anyMatch(v -> v.equals(myURL.toString()))

但是当你要求高效的解决方案时,我建议你选择老式的非流式版本。因为第二个版本最有可能使用明显更多的CPU周期。

只有当你的地图有 zillions 条目,并且你只看响应时间时,那么使用parallelStream()可能会给你更多答案<强>快速

答案 1 :(得分:9)

map.containsKey(key)

map.containsValue(val)

如果你坚持迭代,请执行:

Iterator<Entry<String, String>>iterator=map.entrySet();
while(iterator.hasNext()){
  final Entry<String, String>next=iterator.next();
  next.getKey(); next.getValue();
}
  

指定人:   http://docs.oracle.com/javase/7/docs/api/java/util/Map.html

答案 2 :(得分:2)

map.containsValue方法就是您所需要的。见doc

答案 3 :(得分:1)

检查类javadocs,你会发现有两个方法包含key和containsvalue http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

答案 4 :(得分:1)

boolean result = selections.values().stream().anyMatch(Boolean::booleanValue);

答案 5 :(得分:0)

说到效率,这种数据结构的存在是低效率和糟糕设计的证明。 DoSomethingWHenResized是您正在寻找的方法