Map.putAll
等效于针对指定映射中从键k到值v的每个映射,在映射上调用Map.put(k, v)
一次。因此在功能方面,两者是相同的。
因此,我很想知道其他区别以及何时使用哪个区别?
最佳答案
这得看情况。put
和putAll
是接口(interface)方法,因此该接口(interface)的每个实际实现都将保证put
方法在映射中放置一个键/值对,而putAll
将源中的所有键/值对放置。
但这取决于实现者该如何做以及该做什么(内部)。
当然,一个简单的实现会为源映射的每个条目调用put
,但是也许有人发明了另一种方法来实现目标。否则putAll
在输入添加对之前/之后/之时会做其他一些 map 内部工作。
我的经验法则是:如果必须将所有键/值对从一个映射放置到另一个映射,则依靠实现者的聪明才智并使用putAll
方法。与手动为所有对调用put
相比,它总是有更好的性能。