HashMap实现原理:容量、负载因子、hash与定位都搞定了吗?( 三 )
Tips:
默认的capacity为16 , loadFactor为0.75 , 但如果需要优化的话 , 要考量具体的使用场景 。
-
如果对迭代性能要求高 , 不要把capacity设置过大 , 也不要把loadFactor设置过小 , 否则会导致bucket中的空位置过多 , 浪费性能
-
如果对随机访问的性能要求很高的话 , 不要把loadFactor设置的过大 , 否则会导致访问时频繁碰撞 , 时间复杂度向O(n)退化
-
如果数据增长很快的话 , 或数据规模可预知 , 可以在创建HashMap时主动设置capacity
hash与定位
作为API的设计者 , 不能假定用户实现了良好的hashCode方法 , 所以通常会对hashCode再计算一次hash:
static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
推荐阅读
- 左慈|三国杀:技能缝接,超强发挥,用左慈就能实现
- 商人|游戏商人的月入百万是真的吗?揭秘真实的剑三游戏商人真实现状
- fly|从电竞迈向艺术:Fly选手实现人生跨越,成历史第一人!
- 赤色要塞|玩经典游戏《赤色要塞》魔改版:吉普车也能用激光炮,童年梦想实现了
- 手机游戏|梦幻西游手游:封系统治擂台?浅谈经脉学问,方寸也能实现双封!
- 魂斗罗|“为什么魂斗罗内存这么少,却可以实现那么长的剧情?”
- rw战队|KPL前瞻:Hero对阵RW侠首发公布,黑鲸的Flag真有可能实现
- 单机|《仙剑奇侠传七》逆风翻盘!蒙尘的老牌IP,终于实现了自我救赎
- LGD|Ti10:LGD实现逆天翻盘锁定总决赛,虎牙Sccc激动到泪目
- 美好世界|“我们的工作只是实现人类的愿望,而不是创造一个我们认为的《美好世界》”