java - 向 hashCode() 添加数字有什么用?

标签 java duplicates hashset hashcode

我是初学者 我有源代码,我找到了这个方法

    @Override
    public int hashCode(){

        return this.name.hashCode() + 57;

    }

它可以从 HashSet 对象中删除重复项,我的问题是为什么存在 57,我删除了它然后代码运行良好,那么这个方法中数字的用途是什么?

最佳答案

在代码中:

class MyClass {
   public int hashCode(){
      return this.name.hashCode() + 57;
   }
}

这个问题是有效的,因为 this.name.hashCode() 是一个格式良好的 hashCode() 实现(我们可以假设 this.name code> 是一个 String)。

我认为添加数字是因为方法 hashCode() 来自 Object。假设您有一个 Set,其值类型为 StringMyClass。如果 String 实例与 MyClass.name 之一相同,则添加 57 可以避免两者共享相同的哈希码。

关于java - 向 hashCode() 添加数字有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58757873/

相关文章:

java - 是否有理由不在 android studio 中使用 lombok

java - jsp中导入java类的问题

java - 不能在插件中引用 org.osgi.*

r - 在R中串联重复的数据框值

mysql - 在应用程序部分设置 MySQL 唯一键或检查重复项?

java - Java 如何从 HashSet 中获取 100 个随机元素?

java - 我如何在 html 页面中找到带有标签表的元素

java - 忽略字符串中的重复项并打印一次字符串

java - HashSet 中的随机数始终相同

java - 在 Java 中将数据从 HashSet 移动到 ArrayList