我可以覆盖equals()来计算散列期间的比较吗?

时间:2015-11-09 06:45:54

标签: java collections hashtable

创建了两个自定义类,例如A和B,其中A由一对整数定义,B由类型A的数组定义(B是整数对数组)。我试图将大量B对象存储在哈希表中,使用B&#39的数组中的第一对作为哈希键。我已经覆盖了两个类的hashCode,并且在重写A的equals()方法时,我试图像这样增加一个比较计数器:

public boolean equals(Object b)
{
  comparisons++; //predefined as a field of A 
  return int1==((A)b).int1 && int2==((A)b).int2;
}   

然而,虽然我相信这段代码是有道理的,但在main中使用它是这样的:

B b = new B(pairsOfA);
key = b.pairs[0]; //use first pair as key for hash table
hTable.put(key, b);
comparisons = comparisons + hTable.get(key).pairs[0].comparisons;

只获取get方法中使用的比较次数,因为每个表成员在搜索过程中只比较一次,我假设。有没有办法在哈希重写hashTable.put()?

时计算比较

0 个答案:

没有答案