c******e 发帖数: 40 | 1 今天电面被问到一个问题:
如果hash出来的结果,hash code(一个int) 超过array的size怎么办。因为32bit系
统上array最大就2^32个,hash code如果超过这个size,怎么处理?
我立马就晕了。。。
请各位大牛指点一下,难道这个不是在设计hash function的时候就要处理吗?hash
function不是根据处理的element的type,设计出来吗?int, float, string 类型的
hash function都不一样吧 |
g*****g 发帖数: 34805 | 2 hashcode 就是32位,每个bucket对应一个linked list,现在JVM做了一点优化改成
tree map.
【在 c******e 的大作中提到】 : 今天电面被问到一个问题: : 如果hash出来的结果,hash code(一个int) 超过array的size怎么办。因为32bit系 : 统上array最大就2^32个,hash code如果超过这个size,怎么处理? : 我立马就晕了。。。 : 请各位大牛指点一下,难道这个不是在设计hash function的时候就要处理吗?hash : function不是根据处理的element的type,设计出来吗?int, float, string 类型的 : hash function都不一样吧
|
c******e 发帖数: 40 | 3 既然水果面试官问了我要处理,应该是有solution吧。
难道是多一层的linked list,就是对hash code 再取hash code
这样容量就成2^64了
【在 g*****g 的大作中提到】 : hashcode 就是32位,每个bucket对应一个linked list,现在JVM做了一点优化改成 : tree map.
|
h*******e 发帖数: 1377 | |
w**z 发帖数: 8232 | 5 就跟他说重写hash code
【在 c******e 的大作中提到】 : 既然水果面试官问了我要处理,应该是有solution吧。 : 难道是多一层的linked list,就是对hash code 再取hash code : 这样容量就成2^64了
|
c******e 发帖数: 40 | 6 我也是这么说的,说明hash funciton有问题
【在 h*******e 的大作中提到】 : 除以大prime
|
l*****a 发帖数: 14598 | 7 多大合适呢?
怎么选取大prime呢?
【在 h*******e 的大作中提到】 : 除以大prime
|
j**********3 发帖数: 3211 | |
c******e 发帖数: 40 | 9 码农
【在 j**********3 的大作中提到】 : 这啥职位啊
|