好吧,这是我不明白的一点。
如果尝试使用get()
方法检索对象并返回null,则仍可能将null
存储为与您提供给get()
方法的密钥关联的对象。您可以通过将对象的密钥传递给containsKey()
方法来确定是否属于这种情况。这将返回true
如果密钥存储在地图
那么,如何containsKey()
应该告诉我,如果用随附的键关联的值null
?
这是the reference如果你想检查。第553了解哈希图<K,V>
5
A
回答
4
考虑的代码这个简单的片断:
Map<String, String> m = new HashMap<String, String>();
m.put("key1", "value1");
m.put("key2", null);
System.out.println("m.get(\"key1\")=" + m.get("key1"));
System.out.println("m.containsKey(\"key1\")=" + m.containsKey("key1"));
System.out.println("m.get(\"key2\")=" + m.get("key2"));
System.out.println("m.containsKey(\"key2\")=" + m.containsKey("key2"));
System.out.println("m.get(\"key3\")=" + m.get("key3"));
System.out.println("m.containsKey(\"key3\")=" + m.containsKey("key3"));
正如你可以看到我把地图上的两个值,其中一个是空。我问了地图三个值:其中两个存在(一个为空),一个不存在。看看结果:
m.get("key1")=value1
m.containsKey("key1")=true
m.get("key2")=null
m.containsKey("key2")=true
m.get("key3")=null
m.containsKey("key3")=false
第二个和第三个是棘手的部分。 key2
存在空值,因此,使用get()
,您无法区分该元素是否不在地图中,或者是否在具有null
值的地图中。但是,使用containsKey()
即可,因为它返回boolean
。
9
Map<String, Object> map = new HashMap<String, Object>();
map.put("Foo", null);
System.out.println(map.containsKey("Foo"));
System.out.println(map.containsKey("Boo"));
OUTPUT:
true
false
get()
返回null
在两种情况下:
- 的关键并不在地图存在。
- 关键确实存在,但关联值为
null
。
从get()
你不能告诉哪个是真的。但是,containsKey()
会告诉您密钥是否存在于地图中,而不管其关联值是否为null
。
1
containsKey会告诉你密钥是否在hashmap中。考虑一个密钥存在空值的情况,以及另一种情况,即你正在查找的密钥根本不在哈希映射中。
+0
+1正确的答案。 –
3
(get() == null && containsKey()) == value is null
相关问题
- 1. 我误解了哈希盐是什么?
- 2. 解码哈希
- 3. 解密哈希
- 4. 解密的哈希和加密哈希
- 5. 哈希地图与<Key,Value>
- 6. 解密MD5哈希
- 7. 了解并从ASP.NET和html中提取哈希图像
- 8. 了解在K&R
- 9. jQuery“window.location.hash” - 哈希太迟了?
- 10. Perl哈希哈希
- 11. 了解三维k均值图表
- 12. 形式的哈希表 - 在Java中的<key,哈希表>
- 13. 类条目<K,V>实现了Map.Entry <K,V>
- 14. Gravatar:哈希图像?
- 15. 地图哈希表
- 16. 实施哈希映射<K,ArrayList>与值监听器,即ArrayList
- 17. 用哈希解树同构
- 18. 解引用的哈希值
- 19. Vb.net解密SHA512哈希
- 20. 在Ruby中解释哈希
- 21. 如何解码SHA384哈希?
- 22. 解密哈希密码
- 23. 通用哈希误解
- 24. 解析哈希和数组
- 25. 哈希表解释器
- 26. 解密md5哈希函数
- 27. 哈希访问哈希
- 28. 哈希[string.split(...)]对哈希[* string.split(...)]
- 29. 哈希哈希在Perl中
- 30. 了解K均值聚类
好吧,正确解释它。在现实生活中,我必须首先使用'containsKey()'来检查键是否有效,然后显示与之相关的值。如果没有,那么显示一条消息或抛出一个异常:) –
@FasihKhatib只有当你在Map中存储'null'时才真正需要。如果你从不在Map中存储'null',那么在检查有效的空映射方面没有太多的意义。 –