java - "Equal Arrays"的哈希函数

标签 java hash

我正在开发一个 Java 程序。在程序中,有一个类,其字段中有一个整数数组。该类必须满足以下一项要求:

对于该类的两个实例,如果两个对应的整数数组至少包含一个公共(public)元素,则这两个类“相等”。否则,它们就不相等。

重写该类的“equals”方法来满足这个要求并不困难。然而,我在想出一个相应的哈希函数来覆盖 hashCode 方法时遇到了麻烦。有人对这个类的哈希函数有任何想法吗?谢谢。

最佳答案

根据javadoc for equals() ,它必须是*传递的:

for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.

您建议的 equals() 实现将违反以下示例案例:

  • x 包含 1
  • y 包含 12
  • z 包含 2

所以即使x“等于”yy将“等于”zxz 不会“相等”,因为不共享任何值。

因此,您的提案存在严重缺陷,您不应该实现它。

要回答您的问题,这是无法完成的,因为如果没有与实例进行比较的上下文,则无法确定 hashCode()

关于java - "Equal Arrays"的哈希函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23986012/

相关文章:

java - 如何将文本文件放入Java中的哈希表中?

java - 线程、同步和提升之间可变变量的一致性

javascript - 从 Java Servlet 下载文件

java - 如何在Java中制作一个向下的数字三角形?

hash - 使用 "each"迭代哈希时添加新成员

perl - Perl 是否保证返回一致有序的散列键?

C++ 将函数指针转换为唯一的 “hash” 键

php - PHP如何使Youtube像URL的ID一样?

java - C++ 中的设置/获取方法

java - 解析JSON多个对象