为Anagrams制作相同Hashcode的错误方法

时间:2016-06-06 17:48:31

标签: java algorithm hashmap hashtable

我给了一本字典,我想把字谜存放在同一个桶里。我通过查看类似的问题试图解决我的问题,但我完全击败了。我使用排序后的字符串作为我的键,但是一些不是字谜的词会产生相同的哈希值。例如,'艺术'和' 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;
}

1 个答案:

答案 0 :(得分:1)

我假设你不能使用java数据集实现?

你需要使用我认为的链式散列表或其他一些碰撞处理结构,因为完美的散列将是不切实际的设计。

见这里。

https://en.wikipedia.org/wiki/Hash_table#Collision_resolution