Gur*_*lki 12 java collections dictionary interface
Map.putAll相当于Map.put(k, v)在指定映射中从键k到值v的每个映射调用一次映射.所以功能方面,两者都是一样的.
所以,我很想知道其他差异是什么,何时使用哪一个?
这取决于.
put并且putAll是接口方法,因此该接口的每个实际实现都将保证,该put方法在映射中放置单个键/值对putAll将放置来自源的所有键/值对.
但这取决于实现者如何做到这一点以及另外做什么(内部).
当然,一个简单的实现会调用put源映射的每个条目,但也许有人发明了另一种方法来实现目标.或者putAll在输入添加对之前/之后/将执行一些其他地图内部内容.
我的经验法则:如果你必须将所有键/值对从一个映射放到另一个映射,那么依赖于实现者的智能并使用该putAll方法.它总是很有可能提供比put手动调用所有对更好的性能.
如文档中所述:
将指定的值与此映射中的指定键相关联(可选操作).如果映射先前包含键的映射,则旧值将替换为指定的值.(当且仅当m.containsKey(k)返回true时,地图m才包含密钥k的映射.)
允许您在地图中放置单个键值对.
将指定映射中的所有映射复制到此映射(可选操作).对于在指定映射中从键k到值v的每个映射,此调用的效果等同于在此映射上调用put(k,v)的效果.如果在操作过程中修改了指定的映射,则此操作的行为是不确定的.
将所有数据从一个地图放到另一个地图.
什么时候使用哪一个?
如果要将完整数据从一个地图复制到另一个地图,则可以使用map.putAll其他功能,您只需添加一个键值对即可map.put.
对于在指定映射中从键k到值v的每个映射,Map.putAll等效于在地图上调用Map.put(k,v)的一次.所以功能方面都是一样的.
不是当您在hasmap中实现地图然后使用put(k,v)将一个地图复制到另一个地图将需要更多努力,您可以使用putAll(m)说更多编码我们可以使用单行代码复制地图.
由于 Map 只是一个接口,没有任何实现,所以 putAll 和重复 put 之间没有任何区别,除了您所说的功能方面。换句话说:不可能有任何区别。然而,如果您查看 Map 的各个实现(例如 HashMap),性能可能会有所不同。对于任何合理的实现,一次 putAll 应该至少与重复 put 一样有效,但它可能完全相同。
| 归档时间: |
|
| 查看次数: |
35451 次 |
| 最近记录: |