Java 哈希表中自定义键的实现
如果我们在哈希表中实现自己的键,那么我们的自定义哈希表键必须实现Java 哈希表中自定义键的实现,java,Java,如果我们在哈希表中实现自己的键,那么我们的自定义哈希表键必须实现 public int hashCode() { } 及 这些方法的实现方式是什么?通过阅读理解后,您可以使用commons lang来实现它。如果零件不是性能关键型零件,您甚至可以使用以下参照方法: public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } public int hashCode()
public int hashCode()
{
}
及
这些方法的实现方式是什么?通过阅读理解后,您可以使用commons lang来实现它。如果零件不是性能关键型零件,您甚至可以使用以下参照方法:
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
这并不容易:)这些方法用于哈希表实现,以在插入和检索时识别元素
非常感谢您启发meI真正喜欢EqualsBuilder和HashCodeBuilder类,尽管我通常会因为性能问题而避免使用反射方法。@harmanjd:是的,如果它对性能至关重要,您应该避免使用,但大多数情况下不是这样。例如,如果使用hibernate,则在更新数据库之前,它严重依赖反射来查找对象之间的差异。如果在之后执行10或100毫秒的数据库操作,那么比较对象与反射的2纳秒时间是微不足道的。非常感谢你给我的启发。看看dfa的帖子。他提供了指向有效Java的确切章节的链接。我最后的两个链接有点旧了。第一个很好,“public Object equals(Object obj)”必须读为“public boolean equals(Object obj)”。
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}