如何从Java中的另一个类访问哈希表的当前大小
我正在做一个作业,我应该为一个名为Book的类实现我自己的hashcode和equals函数。hashtable有自己的抽象类ProbingHashTable(也有其他类用于实现不同类型的探测,扩展ProbingHashTable类,用于赋值的另一部分)
如果可能的话,我想在hashcode函数中包括key % tableSize
(除其他外)。ProbingHashTable有一个size()函数,但当然,如果哈希表被重新设置,则大小可能会改变。是否可以通过某种方式从Book类访问表的当前大小
# 1 楼答案
不太清楚您想要什么,但似乎您想要根据与正在调用的对象
hashCode
无关的某些状态来更改在hashCode
中返回的内容这很难做到,更重要的是,几乎肯定会打破the contract of ^{} 。如果您检查文档,对
hashCode
的第一个要求是:这意味着您的{{CD1>}方法不能“EEM>”考虑在^ {CD6>}方法中未考虑的任何数据。由于“与此对象基本无关的贴图大小”不是在中不应该使用的东西
equals
方法中应该使用的任何东西,因此它肯定是^{您可以在
Book
类中保留对映射的引用,并在hashCode
方法中查询当前大小,但这肯定会导致大量问题,并且不会真正对您有任何好处这就是说:您所描述的计算(如
key % tableSize
)通常在调用hashCode
方法之后的映射实现中完成换句话说:如果映射实现(或任何获取并使用
hashCode
结果的人)进一步操纵返回值以满足其要求,这是完全正确的。这就是你应该努力的方向