2013-10-18 62 views
3

这是一个家庭作业问题,所以我没有寻找具体的实现,但更多的理解如何实现以下内容:在Java中散列对象?

我必须创建一个哈希表类,我明白哈希表如何工作,但我是混淆了它如何实际散列对象。在我们看到的例子中,我们通常会将整数存储在散列表中(为了简单起见),并使用诸如value%10等算法对它们进行散列处理。

我很好,但对以下内容感到困惑。我们被要求写一个类,可以采取任何对象,并提供插入等方法。我不知道我怎么能打电话Object%10考虑到我不能找到一个对象的模数。考虑到这一点,我不知道用户可以传递给这个类的对象是什么类型的(它可能是他们自己写的),你希望如何为所有可能的对象编写一个哈希函数?我在这里错过了什么吗?

我试过谷歌搜索,但我不能完全肯定谷歌,所以我来了什么没有太大的,感谢

+0

乍看之下,我把这个问题看作*哈希对象帮助Java *。请重新设定问题,并避免在每个单词的开头加盖。 – SudoRahul

+0

@ R.J标题已修复抱歉。 – Scott

回答

2

Hashcode方法总不必须value%10,在对象的情况下,它是一个数字派生使用对象的状态,即对象的属性。
如果你喜欢

public class MyClass { 
    int a; 
    int b; 
} 

类,然后Hashcode方法是简单到

public int hashCode() { 
    int result = a + b; 
    return result; 
} 
+0

我认为散列码是由散列表本身生成的,而不是对象?对象本身提供散列码实现是否是常见做法? – Scott

+1

@gRnt:Hashtable调用对象的'hashcode'方法并使用它来确定indertion位置。 – xyz

+0

好,只是为了澄清我认为哈希表本身做了确定对象的哈希码的艰苦工作,而不是对象实际上实现了这个本身(这是我感到困惑),谢谢。 – Scott

2

检查的the Object class的方法。 Java中的每个对象都有这些方法。看看他们中的一个能否帮助你。