允许HashMap中存在多个空键的好处是什么?

5

为了进行实验,我在一个 Hashmap 实例中添加了多个 null 键。它并没有报错。这样做有什么好处吗?

代码如下:

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个回答

12

我猜你并没有添加多个null键,而是多次覆盖了同一个null键。


请问,如果我将 null 作为键添加会有什么好处? - sushil bharwani
我认为@Babban Shikaari在他的回答中有一个例子。目前我自己想不出来,但我更喜欢有使用null键的选项,而不是需要它却无法使用:P - ZeissS

7

一个普通的哈希映射表会有唯一的键,因此你会不断地覆盖 null 键的条目。你不会有多个相同的键(这需要 MultiMap 或类似的东西)。


4
这个可以通过API调用实现: size:返回这个map中键值对的数量。
hmap.size();

正如所述,您只是用新值覆盖了键/值对。


太棒了,我不知道那个。谢谢你的好回答。 - sushil bharwani

4

它用于获取switch:case:default的行为。

例如:

问题定义:计算机科学系大楼内的咖啡店。他们向计算机科学系学生提供1美元的咖啡,向IT系学生提供1.25美元的咖啡,向其他人提供1.50美元的咖啡。

然后映射如下:

键 -> 值

IT -> 1.25

CS -> 1.00

null -> 1.50

if(map.containsKey(dept))

price = map.get(dept);

else

price = map.get(null);

P.S. - 如果有这个词,我并不是“部门主义者”。 :)


1

0

HashMap允许多个null值,但只允许一个null键。 如果您编写多个null键,如下所示,则null将被覆盖,并且您将获得最终被覆盖的结果。即"world"

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

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

输出:

"world"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接