Google Guava的HashBasedTable.contains()和自定义hashCode实现

时间:2015-12-06 12:31:13

标签: java hashmap guava hashcode

在编写Java代码时,我正在使用Google Guava' HashBasedTable作为

Table<ClassA, ClassB, Integer> myHashBasedTable = HashBasedTable.create();

我已使用Intellij默认语法覆盖hashCode()equals() ClassAClassB

现在我遇到了contains()方法的怪异行为。即使组合(objA, objB)有条目,myHashbasedTable.contains(objA, objB)在某些情况下也会返回false。

我试图按如下方式追踪问题:

Set<ClassA> setA = myHashBasedTable.rowKeySet();
List<ClassA> listA = new ArrayList(setA);
Set<ClassA> setA_fromList = new HashSet(listA);

objA

中包含的某些myHashBasedTable的位置

setA.contains(objA)返回false

listA.contains(objA)返回true

setA_fromList.contains(objA)返回true

是否有人看到此行为的解释?是否与我的自定义hashCode / equals有关,以及HashBasedTable如何处理哈希值,还是有不同的原因?

0 个答案:

没有答案