我必须为完成家庭作业编写一个完美的哈希表,但我很难理解:
hashCode()返回与hashTable中的键之间的区别是什么,因为我必须实现方法getKey(),但我只知道对象x的索引由((a)给出* x.hashCode()+ b)mod p)mod m当a和b是随机整数时,pa素数和m表的大小。
由于索引是由H(键)给出的,这意味着x.hashCode()是我认为的关键,但我不确定因为键和值(只有整数)是相同的
答案 0 :(得分:0)
hashcode()
方法生成在特定实例上应用对象的散列方法的预期结果,而键是对象本身。
请记住,对象可以是另一个复杂/复合对象(比如另一个HashMap)。只要合理实施hashcode()
和equals()
,它就可以正常使用。
如果两个实例生成相同的hashcode()
结果,并且equals()
根据该结果进行比较(保留类型检查,但它们当然也是测试的一部分),对象是被视为平等/相同。
一旦你开始使用TreeMaps(其中相等不是基于hashcode / equality,而是基于排序,Comparable
和Comparator
s),这会变得非常有趣