我有一个带有这个参数的Node类:
public class Node < T > {
private T value;
private int priority;
}
我知道我需要覆盖hashcode方法,但我不知道如何做,因为value
是一个通用对象。我读到可以通过使用对象的地址来完成,但不建议这样做,因为JVM可以在程序执行期间更改对象的地址。
答案 0 :(得分:1)
您应该将value.hashCode()
与priority
值合并,以便计算Node
hashCode()
。
例如:
@Override
public int hashCode()
{
return 31 * value.hashCode() + priority;
}
这依赖于Node
类的用户覆盖相关类中的hashCode()
(用作Node
值类型的类)。
请注意,这是JDK集合类实现hashCode
的方式。例如,hashCode()
的{{1}}的默认实现是Set
元素的hashCode()
之和。