如何在HashMap中查找相同的键和值

时间:2019-03-19 17:21:16

标签: java hashmap key

我有一个带有名称(键)和日期(值)的HashMap,我需要显示是否再次输入的名称是重复的(我正在用不同的状态进行套接字编程)。例如,我在地图上输入了3个不同的名称,第四次输入了重复的名称。

我尝试了这些代码(它们运行了),但没有成功:

HashMap<String, String> map = new HashMap<String, String>();

if(stat.equals("RECEIVE_NAME")){
   name = reader.readLine();
   if(map.containsKey(name)){
      System.out.println("duplicate");
   }
}

for(Map.Entry<String, String> entry : map.entrySet()){
   if(name.equals(entry.getKey())){
      sendMessage("duplicate");
   }
}

注意:我有一个map.put(name),当在此序列的块之后不是重复项时。而且我知道哈希映射不能有重复的键:)

2 个答案:

答案 0 :(得分:0)

HashMap不能包含重复的键。如果将键值对放在已经包含键的映射中,则旧值将被新值替换。

答案 1 :(得分:0)

map.put()返回与键关联的前一个值,如果没有键的映射,则返回null。因此,您可以存储该返回值并检查是否不为空:

String check = map.put(name);
if(check != null){
    System.out.println("dup: " + check);
}

使用map.putIfAbsent(name)不会覆盖相关的值。