即使假设您将构建其他映射的成本排除在putAll()
之外,通常(即不是并发),putAll()
也不会比使用批次的put()
更高效。这是因为putAll()
将需要迭代传递的Map元素,并且需要贯穿算法,将每个键值对添加到执行的映射。ConcurrentHashMap和putAll()方法
但是对于一个ConcurrentHashMap,构建一个常规Map然后使用putAll()
来更新它是否有意义?或者我应该对put()
进行10(或100,或1000)的呼叫?
对于putIfAbsent()
的多次呼叫,答案是否会更改?
谢谢!
你甚至使用线程来填充ConcurrentHashMap吗?如果不是,则putAll()或100个连续put()的 – jitter 2009-11-05 02:18:07
之间不会有任何区别是(至少)有一个线程正在写入ConcurrentHashMap,并且多个线程正在读取它。 – Rudiger 2009-11-05 02:25:18
PutAll()就像是一个在CHM中添加多个元素的自动化过程,比一个一个地自己做。 – AKS 2013-08-20 04:14:10