java - 基于多个值创建唯一的 hashCode
问题描述
我正在尝试基于六个不同的值实现唯一的 hashCode。我的班级具有以下属性:
private int id_place;
private String algorithm;
private Date mission_date;
private int mission_hour;
private int x;
private int y;
我正在计算 hashCode 如下:
id_place * (7 * algorithm.hashCode()) + (31 * mission_date.hashCode()) + (23 * mission_hour + 89089) + (x * 19 + 67067) + (y * 11 + 97097);
我怎样才能把它变成一个独特的hashCode?我不相信它是独一无二的......
解决方案
它不必是唯一的,也不能是唯一的。hashCode()
返回一个int
(32 位),这意味着如果您只有一个int
属性而没有其他属性,它可能是唯一的。
该类Integer
可以(并且确实)有一个独特的hashCode()
,但很少有其他类有。
由于您有多个属性,其中一些是int
,作为hashCode()
这些属性的函数的 a 不能是唯一的。
您应该努力为hasCode()
您的属性的不同组合提供范围广泛的不同值的函数,但它不能是唯一的。
推荐阅读
- python - 使用 lambda 和 getattr 循环制作按钮
- php - 如何从这个 json 响应中得到一个准确的值?
- flutter - 存储数据,以便在 Flutter 中全局可用
- c++ - gcc中的二义运算符
- java - 方法不会在 JUnit5 测试用例中抛出
- database - Liquibase tag rollback command
- android - Cordova 应用程序突然没有互联网连接;似乎没有什么可以解决的
- javascript - 高级过滤和减少
- java - 如何编写程序以在 java 8 中使用流添加 char []arr
- c# - 是否可以使用 c# 在我的网络上的远程 pc 上获取 IPEndPoints 列表