示例不遵循:HashMap仅允许一个键和多个空值

时间:2015-07-18 15:29:24

标签: java hashmap key

今天我读了一本书: -

  

“HashMap允许集合中有一个空键和多个空值。”

HashMap<Object,Object> ih=new HashMap<Object,Object>();

   Object o1=null;
   Integer o2=null;

   ih.put(o1,null);
   ih.put(new Integer(2),null);
   ih.put(o2,new Integer(3));

此示例在地图中放置了两个空对象引用。

但以下示例已成功编译并运行...

我无法找出原因?

2 个答案:

答案 0 :(得分:1)

这本书可能意味着什么:

  • HashMap<X, Y>的可能键中,可以有一个空键;
  • 无论密钥(甚至为空!),与此密钥关联的值都可以为空。

因此,您的代码工作是完全正常的。只是这本书的文字非常令人困惑。

但当然,这完全取决于Map的实施;其中一些(例如ConcurrentHashMap)将不允许使用null键或值。

答案 1 :(得分:1)

  

&#34; HashMap允许一个空键和多个空值   。收集&#34;

如果您继续添加null密钥,则只允许一个null密钥,它将覆盖以前的值。实际上,HashMap中的任何键都是如此。

底线是 - HashMap allows only one key

e.g。如果你打印Hashmap的大小,它将是2。 System.out.println("size:: "+ih.size());