我有一个带有名称(键)和日期(值)的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),当在此序列的块之后不是重复项时。而且我知道哈希映射不能有重复的键:)
答案 0 :(得分:0)
HashMap不能包含重复的键。如果将键值对放在已经包含键的映射中,则旧值将被新值替换。
答案 1 :(得分:0)
map.put()
返回与键关联的前一个值,如果没有键的映射,则返回null。因此,您可以存储该返回值并检查是否不为空:
String check = map.put(name);
if(check != null){
System.out.println("dup: " + check);
}
使用map.putIfAbsent(name)
不会覆盖相关的值。