java - 为 Anagrams 制作相同哈希码的错误方法

标签 java algorithm hashmap hashtable

我有一本字典,我想将字谜存储在同一个桶中。我曾尝试通过查看类似问题来解决我的问题,但我完全被打败了。我使用排序后的字符串作为我的键,但一些不是字谜的词会产生相同的散列。例如,“art”和“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;
}

最佳答案

我假设您不能使用 Java 数据集实现?

我认为您将需要使用链式哈希表或其他一些冲突处理结构,因为设计完美的哈希是不切实际的。

看这里。

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

关于java - 为 Anagrams 制作相同哈希码的错误方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37663786/

相关文章:

java - 顺序搜索 Java

algorithm - 如何轻松比较由空间中的点组成的两条线?

Java 重用列表来填充 HashMap 的问题

java - 如何获得android应用程序的管理员权限

java - 将输入值设置为 JScrollBar 的值

java - 组合 Java 性能

java - 生成字符串所有组合的算法

java - c :forEach doesn't print map contents in JSP

go - 如何将 slice 分配给 HashMap

java - 使 rpm-maven-plugin 在 MAC OS 上工作(mavericks)