有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何从Java中的另一个类访问哈希表的当前大小

我正在做一个作业,我应该为一个名为Book的类实现我自己的hashcode和equals函数。hashtable有自己的抽象类ProbingHashTable(也有其他类用于实现不同类型的探测,扩展ProbingHashTable类,用于赋值的另一部分)

如果可能的话,我想在hashcode函数中包括key % tableSize(除其他外)。ProbingHashTable有一个size()函数,但当然,如果哈希表被重新设置,则大小可能会改变。是否可以通过某种方式从Book类访问表的当前大小


共 (1) 个答案

  1. # 1 楼答案

    不太清楚您想要什么,但似乎您想要根据与正在调用的对象hashCode无关的某些状态来更改在hashCode中返回的内容

    这很难做到,更重要的是,几乎肯定会打破the contract of ^{}。如果您检查文档,对hashCode的第一个要求是:

    Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified

    这意味着您的{{CD1>}方法不能“EEM>”考虑在^ {CD6>}方法中未考虑的任何数据。由于“与此对象基本无关的贴图大小”不是在equals方法中应该使用的任何东西,因此它肯定是^{中不应该使用的东西

    可以Book类中保留对映射的引用,并在hashCode方法中查询当前大小,但这肯定会导致大量问题,并且不会真正对您有任何好处

    这就是说:您所描述的计算(如key % tableSize)通常在调用hashCode方法之后的映射实现中完成

    换句话说:如果映射实现(或任何获取并使用hashCode结果的人)进一步操纵返回值以满足其要求,这是完全正确的。这就是你应该努力的方向