gpt4 book ai didi

java - 使用随机访问文件java实现散列

转载 作者:行者123 更新时间:2023-12-01 06:11:25 24 4
gpt4 key购买 nike

我正在使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com