Java如何使哈希唯一

时间:2017-09-14 09:34:28

标签: java generics hash interface hash-code-uniqueness

我正在尝试创建一个抽象类Coin,具有实例变量名称(String),符号(类型为java.awt.Image)和hash(一个String)。问题是我需要创建属性哈希与默认hashcode()方法返回的属性哈希不同,因此具有唯一的硬币哈希值。

abstract class Coin {

    private String name;
    private Image symbol; 
    private String hash;

}

2 个答案:

答案 0 :(得分:0)

您可以通过以下方式覆盖默认的hashCode()功能:

 @Override
public int hashCode() {
    // Unique hashcode generating function goes here
    return hash;
}

一种方法可能是使用name.hashCode()+symbol.hashCode()

答案 1 :(得分:0)

在我继续之前让你知道,由于hash collision,哈希值可能永远不会100%唯一。

话虽如此,我假设您需要一个唯一的String for variable hash(注意hashCode()函数在java中是不同的,因为它返回一个int)

有许多哈希算法,我在这种情况下通常用于统一的算法是MD5

有一个名为DiguestUtility Apache实用程序,让生活变得轻松。

以下是使用示例:

DigestUtils.md5(byte[] bytes);// --> returns a string of 32 char long
DigestUtils.md5(String s);// --> returns a string of 32 char long
...

仔细阅读文档中的方法,了解哪一方法适合您。