Java HashMap get以字符串作为键提供null

Java HashMap get以字符串作为键提供null,java,string,hashmap,Java,String,Hashmap,我对HashMap中的get(对象键)方法有问题 hm.put("597068",o1); hm.put("ws-5896",o2); 当我尝试以下代码行时,它给出了正确的对象: hm.get("597068"); 但当我尝试获取Ws-5896时,它会给出Null。为什么? hm.get("ws-5896"); 更新 HashMap声明: private static HashMap<String,Ort> hm = new HashMap<String,Ort>(

我对HashMap中的get(对象键)方法有问题

hm.put("597068",o1);
hm.put("ws-5896",o2);
当我尝试以下代码行时,它给出了正确的对象:

hm.get("597068");
但当我尝试获取Ws-5896时,它会给出Null。为什么?

hm.get("ws-5896");
更新 HashMap声明:

private static HashMap<String,Ort> hm = new HashMap<String,Ort>();
private static HashMap hm=new HashMap();

不幸的是,HashMap在执行操作时无法区分空值和无条目

返回指定键映射到的值,如果为空,则返回null 此映射不包含密钥的映射

您是否已使用检查键检查地图中是否包含该键

返回值null不一定表示映射 不包含密钥的映射;也有可能是地图 显式地将密钥映射为null。可以使用containsKey操作 区分这两种情况


将hm.keySet()打印到屏幕上,您将看到代码失败的地方。我打赌你正在寻找“Ws-5896”键,HashMap区分大小写

你能在声明了
HashMap
的地方张贴行吗?假设
o2
不是
null
并且没有被你或其他线程删除(如果有的话),那么你传递的键可能有问题。确保它是相同的
字符串
,特别检查
-
。你能比较一下用来输入值的键和用来提取值的键吗?也许
o2
null
?@Harmlezz我敢打赌它是。HashMap不区分大小写。区分大小写取决于key equals实现(在本例中,String.equals()是敏感的)@Brian Agnew我的意思正是这样!containsKey()返回false,这很奇怪,因为如果我检查keySet(),那么其中就有“Ws-5896”。这看起来像是一个案例问题,是吗?Ws-5896 vs Ws-5896的确,我解决了它。代码中的搜索函数将每个字符串都改为小写。谢谢你的提示!