我给了一本字典,我想把字谜存放在同一个桶里。我通过查看类似的问题试图解决我的问题,但我完全击败了。我使用排序后的字符串作为我的键,但是一些不是字谜的词会产生相同的哈希值。例如,'艺术'和' slickest'有相同的哈希。这是我的代码,TABLE_SIZE是我的表的大小:
public int myHash(String str) {
int hash = 0;
char[] letters = str.toCharArray();
Arrays.sort(letters);
String convertedString = new String(letters);
System.out.print("The string is: " + convertedString + " ");
hash = convertedString.hashCode() % TABLE_SIZE;
if (hash < 0) {
hash += TABLE_SIZE;
}
return hash;
}
答案 0 :(得分:1)
我假设你不能使用java数据集实现?
你需要使用我认为的链式散列表或其他一些碰撞处理结构,因为完美的散列将是不切实际的设计。
见这里。
https://en.wikipedia.org/wiki/Hash_table#Collision_resolution