【发布时间】:2018-12-04 12:44:05
【问题描述】:
假设我有一个哈希图。
HashMap<String,String> hm = new HashMap<String,String>();
现在我在这张地图中放了一些值,如下所示。
hm.put("A","First");
hm.put("B","First");
在此之后,我再次为已存储的键“A”设置了一些值。
hm.put("A","Second");
现在,如果我尝试获取 "A" 的值,我将得到 "Second" 作为它的值。
sysout(hm.get("A"));
输出
Second
有没有办法获得以前的值,即"First"?
非常感谢您的帮助。
【问题讨论】:
-
该值被覆盖。无法获得先前的值。您必须实现自己的逻辑来捕获它。
-
我被问到了同样的问题,我也回答了同样的答案,因为值被覆盖了,所以这是不可能的。但是面试官说没有办法得到之前的值。
-
使用
put返回的结果。如果是null,则没有映射到该键。如果结果不为 null,则您有与键关联的先前值。 -
为什么你的例子有两个初始
put语句,即hm.put("A","First"); hm.put("B","First");?这两个映射与获得"First"的愿望之间是否有任何关系?你想得到它是因为"A"以前映射到它还是因为"B"在hm.put("A","Second");之前已经与它关联?还是整个事情都是关于“以前”的实际含义的诡计问题?
标签: java collections hashmap