什么是在hashmap中允许多个null键的好处?

时间:2010-11-09 16:58:19

标签: java hashmap

仅用于实验,我在null实例中添加了多个Hashmap个密钥。并没有抱怨。这样做有什么好处?

代码是,

Map hmap = new HashMap();
hmap.put("sushil","sushil11" );
hmap.put(null,null);
hmap.put(null,"king");
hmap.put(null,"nagasaki");
hmap.put(null,null);

地图上有多少把钥匙?

6 个答案:

答案 0 :(得分:11)

我猜你还没有添加多个null - 键。您只是多次覆盖相同的null密钥。

答案 1 :(得分:7)

普通的hashmap将具有唯一键,因此您将重复覆盖null键的条目。您将没有多个相同的键(为此您需要MultiMap或类似的)

答案 2 :(得分:4)

这是一个API调用:

size:返回此映射中键 - 值映射的数量。

hmap.size();

如上所述,您只需使用新值覆盖键/值对。

答案 3 :(得分:3)

用于获取switch:case:默认行为。

示例:

问题定义:CS部门大楼的咖啡店。他们以1.00美元向CS学生提供咖啡,向IT部门学生提供1.25美元,其他人以1.50美元提供咖啡。

然后地图将是:

键 - >值

IT - > 1.25

CS - > 1.00

null - > 1.50

  

如果(map.containsKey(DEPT))

     

price = map.get(dept);

     

否则

     

price = map.get(null);

P.S。 - 如果这是一个字,我不是“部门”。 :)

答案 4 :(得分:1)

问题是在HashMap中有多个键是不可能的。

如果一次又一次地传递null,则仅替换旧值。

参见:

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/HashMap.java#HashMap.putForNullKey%28java.lang.Object%29

答案 5 :(得分:0)

HashMap允许多个空值,但仅允许一个空键。 如果您按如下所示编写多个null键,则null将被覆盖,并且您将得到最终的覆盖结果。即“世界”

  Map<String, String> valueMap = new HashMap<>();
  valueMap.put(null, "hello");
  valueMap.put(null, "world");

  System.out.println(valueMap.get(null));

输出:

"world"