-2

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

abstract class Coin {

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

}
4

2 回答 2

0

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

话虽如此,我假设您想要一个用于变量哈希的唯一字符串(注意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
...

通读文档中的方法,看看哪一种更适合你。

于 2017-09-14T09:46:15.960 回答
-1

hashCode()您可以通过以下方式覆盖默认函数:

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

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

于 2017-09-14T09:41:33.197 回答