now*_*y94 6 java object collision
我决定学习一些 Java 的主要文档。我已经开始Object上课,我正在研究equals方法。我知道这equals是使用hashCode方法。虽然,hashCode返回 int 因此可以生成的唯一哈希码数量有限。
当我尝试比较两个相同的不同对象时会发生什么hashCode?这甚至可能吗?
是的。两个对象可以具有相同的哈希码。但是,hashcode在比较两个对象时不起作用。如果要检查类的两个对象是否为equal,请重写equals并定义何时应将类的两个对象视为相等。如果要比较类的一个对象是否小于/大于另一个对象(通常在对集合进行排序时),请实现Comparable并覆盖该compareTo方法。(你也可以实现Comparator)
如果您想将对象存储在 a 中HashSet或将其用作 a 中的键HashMap,请确保您覆盖该hashCode方法,否则您的对象/键很可能会存储在不同的存储桶中,从而导致重复。
不要忘记equals在您创建的类中覆盖。如果不这样做,则对类的对象的两个引用只有在引用同一个对象时才相等。
您可以在equals和hashCode文档中阅读有关 equals 和 hashCode 方法的更多信息。
| 归档时间: |
|
| 查看次数: |
4179 次 |
| 最近记录: |