0

如果我将自定义类对象添加到 HashSet 并且不为其提供 hashCode() 方法,它将如何影响散列的性能?

谢谢,阿杰

4

2 回答 2

2

Nikolaus 提到的股票实施速度很快,并且可以正常工作。你应该毫不犹豫地使用它,除非你重写 equals 方法。例如,如果两个 Person 对象具有相同的 getFirstName() 和 getLastName() ,则它们是“相等的”,您将覆盖 equals 方法来检查这一点,并覆盖 hashCode() 以在它们的值返回相同的哈希值时返回相同的哈希值两个属性是一样的。

于 2010-08-02T18:30:23.990 回答
1

如果您没有定义自己的hashCode方法,则对象的父类中的方法会被调用。如果您没有定义父hashCode对象,则调用 Object 类的方法。根据 java api 文档,该方法根据对象的地址返回一个整数 - 但具体如何完成取决于 jvm 和操作系统。

总之——如果你不指定任何 hashCode 方法,就像把对象放在 hashTable 中一样。

于 2010-08-02T18:27:33.403 回答