HashMap实现原理:容量、负载因子、hash与定位都搞定了吗?( 八 )
针对HashMap的使用 , 此处要注意覆写hashCode和equals方法时的两个重点:
-
覆写后 , 一定要保证equals判断相等的时候 , hashCode的返回值也相等 。
-
对于选作key的类 , 要保证调用put与get时hashCode的返回值相等 , equals的性质相同 。
resize
resize是HashMap中最难理解的部分 。
调用put方法时 , 如果发现目前的bucket占用程度已经超过了loadFactor , 就会发生resize 。 简单的说就是把bucket扩充为2倍 , 之后重新计算index , 把节点再放到新的bucket中 。
javadoc中这样说:
Initializes or doubles table size. If null allocates in accord with initial capacity target held in field threshold. Otherwise because we are using power-of-two expansion the elements from each bin must either stay at same index or move with a power of two offset in the new table.
推荐阅读
- 左慈|三国杀:技能缝接,超强发挥,用左慈就能实现
- 商人|游戏商人的月入百万是真的吗?揭秘真实的剑三游戏商人真实现状
- fly|从电竞迈向艺术:Fly选手实现人生跨越,成历史第一人!
- 赤色要塞|玩经典游戏《赤色要塞》魔改版:吉普车也能用激光炮,童年梦想实现了
- 手机游戏|梦幻西游手游:封系统治擂台?浅谈经脉学问,方寸也能实现双封!
- 魂斗罗|“为什么魂斗罗内存这么少,却可以实现那么长的剧情?”
- rw战队|KPL前瞻:Hero对阵RW侠首发公布,黑鲸的Flag真有可能实现
- 单机|《仙剑奇侠传七》逆风翻盘!蒙尘的老牌IP,终于实现了自我救赎
- LGD|Ti10:LGD实现逆天翻盘锁定总决赛,虎牙Sccc激动到泪目
- 美好世界|“我们的工作只是实现人类的愿望,而不是创造一个我们认为的《美好世界》”