我对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)
        代码示例:
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)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           96832 次  |  
        
|   最近记录:  |