HashMap面试题,看这一篇就够了。

hashmap
1、为什么是2的指数次幂?
  ①、h & (length - 1) = hashcode&length (length必须是2的指数次幂)
  ②、位运算耗时:2640ms
    取模运输=算耗时: 23157ms
  ③、数组扩容,产生大量的rehash(用取模耗时慢),java8不需要rehash
2、负载因子为什么是0.75?
 如果loadfactor >= 1  hash碰撞的可能性 
 链表长度随之越长,get时间复杂度越高(效率低,时间换空间)
 如果loadfactor <0.75 
 效率很高,查询时间段(空间换时间)
 折中1到0.5 = 0.75 考察高数中的牛顿二项式  log2=0.698....=  空间与时间的折中

3、链表转红黑树的阈值是8,为什么?
  泊松分布(概率统计)
  并不是任何时候都会转成红黑树,当table[].length<64,链表长度达到只会触发扩容(链表长度不小于64时才转红黑树)
  8<链表<64     链表>64才转成红黑树

hashmap讲解链接地址:https://blog.csdn.net/valada/article/details/103359320

hashmap讲解源码分析:http://www.jmlson.com/jmls/diaodadetail?30

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值