使用HashMap put()

时间:2014-04-29 06:24:10

标签: arrays hashmap

我最近一直在测试HashMap,但我偶然发现了一个有趣的问题。我有一个数组,a3,我设置了一些任意值。然后,我将这个数组放入一个HashMap实例映射中。

我的问题是,当我为一个Object实例赋值put(" a3",a3)时,我似乎无法打印出实例的地址。

例如:

HashMap<Object, Object> map = new HashMap<Object, Object>();
int[] a3 = new int[] {1, 2, 3, 4}; 

map.put("a3", a3); 

当我调用System.out.println(map.put(&#34; a3&#34;,a3)时,我在内存中给出了一个地址。

但是,如果我创建一个对象实例然后尝试打印出该实例,我会得到null。

Object copy = map.put("a3", a3); 
System.out.println(copy); 

运行上面的段给我一个null值。

为什么这两个看似相同的陈述给出了不同的结果?

2 个答案:

答案 0 :(得分:0)

阅读HashMap的API文档。如果地图中没有与您要插入的内容相匹配的值,则返回Null。

http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html#put%28K,%20V%29

因此,如果地图中已经存在“a3”,那么您将得到一个返回,但由于它没有,那么您将返回null。 “a3”已被放入地图但你没有打印地图,你打印了put()的返回。

答案 1 :(得分:0)

正如@James_Massey所说,如果您查阅官方文档,您可以看到put()方法的返回值为:

  

与key关联的上一个值,如果没有则返回null   映射为密钥。 (null返回也可以指示地图   以前使用密钥关联null。)