【发布时间】:2019-03-19 17:21:15
【问题描述】:
我有一个带有名称(键)和日期(值)的 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
-
A
HashMap不能有重复的键。 -
docs.oracle.com/javase/8/docs/api/java/util/… 如果可以插入更多线程,则使用并发版本
-
您的第一个解决方案应该有效。您应该尝试使用调试器,并确保名称完全相同。注意空格。您可以尝试使用“name=reader.readLine().trim()。