家蛙树

面试官问我“如果让你来做HashMap扩容,如何实现在不影响读写的情况下扩容?”
 

JAVA体系内HashMap封装当前容量达到threshold再拷贝扩容,拷贝就肯定影响到读写了。估计这面试官是看多了Redis这类的数据封装。

Redis的字典表在满的时候也会做rehash扩容,旧的哈希表和新的扩容哈希表,但不会立即全量的拷贝迁移数据,而当是redis调用SET,GET再慢慢迁移旧元素到新哈希表中。代价就是吃内存一些。如果自己要去封装这样一个HashMap是有挑战性的。 

 

Redis的数据结构值得学习。

java.util集合类
发表于:2017-08-17 20:23
状态: 已解决
  问题人
kidd
问题:34 答题:0
心得:0 被赞:0
  答题人
Zealot
问题:2 答题:87
心得:20 被赞:0
支付宝扫码支付