首页 > 解决方案 > 基于多个值创建唯一的 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?我不相信它是独一无二的......

标签: javaalgorithmmathhashhashcode

解决方案


它不必是唯一的,也不能是唯一的。hashCode()返回一个int(32 位),这意味着如果您只有一个int属性而没有其他属性,它可能是唯一的。

该类Integer可以(并且确实)有一个独特的hashCode(),但很少有其他类有。

由于您有多个属性,其中一些是int,作为hashCode()这些属性的函数的 a 不能是唯一的。

您应该努力为hasCode()您的属性的不同组合提供范围广泛的不同值的函数,但它不能是唯一的。


推荐阅读