当我使用.putAll()
时,另一个.putAll()
会覆盖地图的内容吗?
我的地图会包含SomeOfMyObjects和SomeOfMyObjects吗?
Map<MyObject> blah = new HashMap<>();
blah.putAll('SomeOfMyObjects')
blah.putAll('SomeOfMyObjects')
谢谢!
答案 0 :(得分:10)
将指定地图中的所有映射复制到此地图(可选操作)。对于在指定映射中从键k到值v的每个映射,此调用的效果等效于在此映射上调用put(k,v)的效果。
this call is equivalent to that of calling put(k, v)
将指定的值与此映射中的指定键相关联(可选操作)。如果映射先前包含键的映射,则旧值将替换为指定的值。 (当且仅当m.containsKey(k)返回true时,地图m才包含密钥k的映射。)
所以它永远不会ovverides
,只是按照put
方法的行为继续进行。
答案 1 :(得分:4)
它的行为就像为参数映射中的每个条目调用“put”一样,因此它会添加,保留地图中已有的任何内容。如果再次添加相同的键,则会覆盖其值。 putAll尝试通过首先在内部扩展地图以适应新数据来优化批量添加,以避免中间调整大小/重新散列操作。
答案 2 :(得分:1)
根据文件: http://docs.oracle.com/javase/6/docs/api/java/util/Map.html#putAll(java.util.Map)它只是添加地图,而不是覆盖内容。
答案 3 :(得分:1)
不确定是否有人发现反对意见。但是,作为Jenkins / Groovy的新用户,我不得不亲自对其进行测试以进行验证,并可以确认是否覆盖了“ put”和“ putAll”。
divisors = np.array(...) # 12 elements
image = np.array(...) # shape (12,773,1231) image
image / divisors[:, np.newaxis, np.newaxis]
和
LinkedHashMap test = [X: 1]
test.put("X", 2)
assertTrue(test["X"] == 2)