我正在尝试了解HashMap
实施。这是叶子节点的声明方式:
class HashMap1[A, B](
val key: A,
val value: B,
val hash: Int,
var kv: (A, B)
) extends HashMap[A, B]
前三个字段都可以。但是最后一个kv
字段只是一个包含键和值的元组。
对我来说,这看起来像是浪费空间(指向元组的指针的大小+元组的大小)。为什么我们需要存储一个可以根据需要轻松计算的额外字段?
答案 0 :(得分:1)
看起来"创作时间"这对比使用内存和#34;更有价值。在这种情况下。
kv
用作缓存,它是var
因为可以按需填充,如果Merger
经常使用此键值对并且{{1},这看起来是合理的}& key
是不可变的,可以按原样传递给新value
,然后用于下一个合并阶段。