在对象的 hashCode() 和 equals() 实现被覆盖后使用它们
Using Object's hashCode() and equals() implementations after they have been overriden
假设我有:
public class A {
@Override
public int hashCode() {
// some expensive calculation
}
@Override
public boolean equals(Object obj) {
// some expensive calculation
}
}
在我的代码中的某个时刻,我希望使用 Object's hashCode() 和 A 作为键类型 的映射equals() 实现(即当且仅当它们引用同一对象时,类型 A 的两个键将被视为相等)。
最好的方法是什么?
您可以在实例化时覆盖方法
A a = new A(){
@Override
public int hashCode() {
return System.identityHashCode(this);
}
};
或者使用 IdentityHashMap
,它使用 System.identityHashCode
假设我有:
public class A {
@Override
public int hashCode() {
// some expensive calculation
}
@Override
public boolean equals(Object obj) {
// some expensive calculation
}
}
在我的代码中的某个时刻,我希望使用 Object's hashCode() 和 A 作为键类型 的映射equals() 实现(即当且仅当它们引用同一对象时,类型 A 的两个键将被视为相等)。
最好的方法是什么?
您可以在实例化时覆盖方法
A a = new A(){
@Override
public int hashCode() {
return System.identityHashCode(this);
}
};
或者使用 IdentityHashMap
,它使用 System.identityHashCode