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
如果我想要替换旧的值,我应该在地图中使用它?
如果我想要我必须做的旧值,请离开打印部件。
答案 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
方法,然后单独打印它们或将它们放在另一个地图中,然后打印它的内容(或者用它们做你想做的事情) )。