我最近一直在测试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值。
为什么这两个看似相同的陈述给出了不同的结果?
答案 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。)