如何在哈希表中分离链相关的字符串?

时间:2014-04-15 08:25:08

标签: java data-structures

例如,如果我有两个字符串

s1 = "stack"s2 = "stacks"

如何实现程序以允许将字符串放在同一个存储桶中(在这种情况下s1s2将位于同一个存储桶中)?

此实现是否与哈希函数有关?

我正在创建一个解谜程序,整个想法是不再需要搜索" stacks"如果我知道" stack"在拼图中不存在。

2 个答案:

答案 0 :(得分:2)

您必须创建一个哈希函数,为“堆栈”和“堆栈”返回相同的值(hashCode)。 BTW this is not a good idea。 hashCode生成不应该基于您想要在链中的内容(即,在哈希表中发生冲突时的链表)。它应该是这样的,它为每个被添加的对象返回一个唯一值,并减少冲突。

答案 1 :(得分:0)

这会有点难度,因为String是一个你无法扩展并覆盖它的最终类。你可以做的就是创建一个包装类,它将把你的字符串作为成员变量进行搜索。您可以将此对象存储在哈希表中。现在,您可以在此类中重写equals和hashcode以匹配链接字符串。

public class MyString
{
    public String string;

    public boolean equals(Object s)
    {
          //your logic for comparing string

    }

    public int hashcode()
    {
       //generate hashcode that is same for two objects true by equals
    }
}

即便如此,我也不确定你是否能够实现。我建议使用Trie数据结构,这将使您的任务变得更加容易。