Map.putAll等效于针对指定映射中从键k到值v的每个映射,在映射上调用Map.put(k, v)一次。因此在功能方面,两者是相同的。

因此,我很想知道其他区别以及何时使用哪个区别?

最佳答案

这得看情况。
putputAll是接口(interface)方法,因此该接口(interface)的每个实际实现都将保证put方法在映射中放置一个键/值对,而putAll将源中的所有键/值对放置。

但这取决于实现者该如何做以及该做什么(内部)。

当然,一个简单的实现会为源映射的每个条目调用put,但是也许有人发明了另一种方法来实现目标。否则putAll在输入添加对之前/之后/之时会做其他一些 map 内部工作。

我的经验法则是:如果必须将所有键/值对从一个映射放置到另一个映射,则依靠实现者的聪明才智并使用putAll方法。与手动为所有对调用put相比,它总是有更好的性能。

08-04 19:09