2017-09-03 82 views
0

为什么HashMap在java中包含单个null值?为什么HashMap在java中包含单个null值?

我在面试中问过为什么HashMap允许空值。我找到了一篇描述HashMap实现的文章。但不显示为什么它只包含null。这背后的原因是什么,为什么Designer设计包含Null。 从Oracle数据源...

public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable 

基于哈希表的Map接口的。该实现提供了所有可选的映射操作,并允许使用空值和空键。 (HashMap类大致相当于Hashtable的

http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html 
but why HashMap allows only single Null value ? 
+1

有没有其他的关键是“允许”不止一次? ;) – alfasin

+0

但为什么为空,它应该是空白的。 –

+0

什么应该是“空白”? – luk2302

回答

0

我们可以推测,HashMap允许null键和null值,因为它这样做是有益的。或者,从另一个侧面,也不会带来多大的附加值禁止空值。

HashMap允许只有一个null关键,因为Map S IN一般不支持重复键。

+0

是否为null,如果是,如何? – shiv

+0

@shiv当然不是。你不能有重复的'null'键,因为你不能有任何重复的键。 – lexicore

0

哈希表(HashMap的前身)并没有让空这在你需要一个映射的情况下,你需要一个皮塔来存储键值对,其值为null,因为试图将该导致设置为NullPointerException。

您最终创建了一个设置为值的private final static Object NULL,每次设置或检索值时都必须检查空值/代表值并相应地更改它。

允许为null的HashMap值得高度赞赏,因为这一点。

相关问题