HashMap允许重复?

Nan*_*ani 19 java hashmap

我对HashMap有疑问,因为我们都知道HashMap允许一个空键和值对,我的问题是

如果我这样写,

m.put(null,null);
m.put(null,a);
Run Code Online (Sandbox Code Playgroud)

它会抛出(错误或异常)还是会覆盖该值或者什么是returing的值?

小智 33

Hashmap类型如果hashmap键是相同的键,则覆盖该键

map.put("1","1111");
map.put("1","2222");
Run Code Online (Sandbox Code Playgroud)

产量

key:value
1:2222
Run Code Online (Sandbox Code Playgroud)


use*_*740 12

HashMap中的每个都必须是唯一的.

当"添加重复键"时,旧值(对于相同的键,因为键必须是唯一的)被简单地替换; 看HashMap.put:

将指定的值与此映射中的指定键相关联.如果映射先前包含键的映射,则替换旧值.

返回与key关联的先前值,如果没有key的映射,则返回 null.

就null而言:允许使用单个null (因为键必须是唯一的),但HashMap可以具有任意数量的空,而null键不需要具有空值.根据文件:

[.. HashMap]允许空和[a] null .

但是,文档中没有说明null/null需要是特定的键/值对或null /"a"无效.


Sur*_*tta 10

在这个意义上不允许重复,它允许添加你,但它不关心这个键已经有一个值.所以目前一键 只有一个值

它默默地覆盖了valuefor null键.没有例外.

当您尝试获取时,最后插入的值null将返回.

这不仅适用null于任何密钥,也适用于任何密钥.

有一个简单的例子

   Map m = new HashMap<String, String>();
   m.put("1", "a");
   m.put("1", "b");  //no exception
   System.out.println(m.get("1")); //b
Run Code Online (Sandbox Code Playgroud)


kai*_*kai 9

代码示例:

HashMap<Integer,String> h = new HashMap<Integer,String> ();

h.put(null,null);
h.put(null, "a");

System.out.println(h);
Run Code Online (Sandbox Code Playgroud)

输出:

{null=a}
Run Code Online (Sandbox Code Playgroud)

它会覆盖key null处的值.