作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 java 中的随机访问文件实现哈希来处理冲突。我需要使用一种方法根据名称生成 key ,以尽量减少冲突。按照我的方法,如果收入 100 条记录,我会产生 95 次碰撞。
请注意,我使用的哈希方法是对长度为 6 的输入数据字符串进行除法或取模。
此方法是否有可能的改进或替代方案?
public int hashCode(String nombre ) {
int hash = 1;
hash = hash*31 + nombre.hashCode();
System.out.println("hsh " +hash);
return Math.abs(hash);
}
最佳答案
你的代码归结为:
hash = 31 + nombre.hashCode();
如果你的字符串相同,那么你就会发生冲突。
您应该将其更改为更有意义。
public int hashCode(String nombre ) {
int hash = new Random().nextInt(); // PLEASE NOTE YOU SHOULD NOT CREATE NEW RANDOM EVERY TIME. CREATE IT ONCE AND JUST USE nextInt()
hash = hash*31 + nombre.hashCode();
System.out.println("hsh " +hash);
return Math.abs(hash);
}
关于java - 使用随机访问文件java实现散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34073287/
我是一名优秀的程序员,十分优秀!