如何在map.putAll()中获取对象的旧值?

时间:2016-07-15 08:35:14

标签: java dictionary collections

HashMap map= new HashMap(); 
System.out.println(map.put(101,"john"));//null 
System.out.println(map.put(101,"abhraham"));//john

如果我给出现有的密钥,它会替换该值并返回旧值。

但是,如果我使用putAll,我怎么能得到旧值?

HashMap map2=new HashMap();
map2.put(101,"Lincoln");
System.out.println(map.putAll(map2));//runtime exception

如果我想要替换旧的值,我应该在地图中使用它?

如果我想要我必须做的旧值,请离开打印部件。

2 个答案:

答案 0 :(得分:1)

您可以使用Map.put()逐个替换它们,这将返回旧值:

HashMap oldValues = new HashMap();
map2.forEach((key, value) -> {
    oldValues.put(key, map.put(key, value));
});

答案 1 :(得分:0)

HashMap.putAll()方法有一个void返回类型,这就是你得到异常的原因。您必须为HashMap.put()变量的每个元素调用map2方法,然后单独打印它们或将它们放在另一个地图中,然后打印它的内容(或者用它们做你想做的事情) )。