我试图将数据映射到具有损坏的哈希码契约的类的实例 - 即,对于给定的类Foo
,fooInst.clone().equals(fooInst)
计算为true
,但是fooInst.clone().hashCode() == fooInst.hashCode()
评估为false
。此外,使用提供的构造函数new Foo(fooInst).equals(fooInst)
实际上计算为false
。该类很大,令人困惑甚至表示递归数据结构:Foo
包含对子Foo
实例的映射。我无法改变课程。
为这些对象创建任何类型的地图查找机制有没有快速的方法(无论多么糟糕)?结构不包含任何循环引用,所以它应该可以穿过这个结构;有可能是例如不知何故安全地走路#34;通过对象的数据字段递归使用反射并使用它来创建哈希?或者为了避免散列用于完全映射而不诉诸于例如使用List<Foo>
和List<Bar>
foos.get(n)
与bars.get(n)
相关联,您只需搜索foos
,直到找到与您需要的实例相当的实例找到数据?