请简述一下Java 7中HashMap和HashTable中对于hash的实现-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

请简述一下Java 7中HashMap和HashTable中对于hash的实现

huc_逆天 2021-01-08 14:37:14 86

请简述一下Java 7中HashMap和HashTable中对于hash的实现

Java
分享到
取消 提交回答
全部回答(1)
  • huc_逆天
    2021-01-14 17:22:09
    • HashMap默认的初始化大小为16,之后每次扩充为原来的2倍。
    • HashTable默认的初始大小为11,之后每次扩充为原来的2n+1。
    • 当哈希表的大小为素数时,简单的取模哈希的结果会更加均匀,所以单从这一点上看,HashTable的哈希表大小选择,似乎更高明些。因为hash结果越分散效果越好。
    • 在取模计算时,如果模数是2的幂,那么我们可以直接使用位运算来得到结果,效率要大大高于做除法。所以从hash计算的效率上,又是HashMap更胜一筹。
    • 但是,HashMap为了提高效率使用位运算代替哈希,这又引入了哈希分布不均匀的问题,所以HashMap为解决这问题,又对hash算法做了一些改进,进行了扰动计算。
    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程