地图putAll覆盖或添加?

Jim*_*ers 8 java map

当我使用.putAll()遗嘱时,另一个.putAll()覆盖地图的内容?我的地图会包含SomeOfMyObjects和SomeOfMyObjects吗?

Map<MyObject> blah = new HashMap<>();
blah.putAll('SomeOfMyObjects')
blah.putAll('SomeOfMyObjects')
Run Code Online (Sandbox Code Playgroud)

谢谢!

Sur*_*tta 12

如果你看到文档

将指定映射中的所有映射复制到此映射(可选操作).对于在指定映射中从键k到值v的每个映射,此调用的效果等同于在此映射上调用put(k,v)的效果.

this call is equivalent to that of calling put(k, v) 
Run Code Online (Sandbox Code Playgroud)

按照put()方法

将指定的值与此映射中的指定键相关联(可选操作).如果映射先前包含键的映射,则旧值将替换为指定的值.(当且仅当m.containsKey(k)返回true时,地图m才包含密钥k的映射.)

因此ovverides,根据put方法的行为,它永远不会,只是继续.


rec*_*rec 8

它的行为就像调用put(k,v)参数映射中的每个条目,因此它添加,保留映射中已有的任何内容。如果k再次添加相同的键,其值将v被覆盖。putAll()尝试通过首先在内部扩展地图以容纳新数据来优化批量添加,以避免中间调整大小/重新散列操作。