我正在尝试创建一个抽象类 Coin,具有实例变量名称(字符串)、符号(java.awt.Image 类型)和哈希(字符串)。问题是我需要使属性哈希不与默认 hashcode() 方法返回的相同,因此具有唯一的 Coin 哈希。
abstract class Coin {
private String name;
private Image symbol;
private String hash;
}
我正在尝试创建一个抽象类 Coin,具有实例变量名称(字符串)、符号(java.awt.Image 类型)和哈希(字符串)。问题是我需要使属性哈希不与默认 hashcode() 方法返回的相同,因此具有唯一的 Coin 哈希。
abstract class Coin {
private String name;
private Image symbol;
private String hash;
}
在我继续之前让您知道,由于哈希冲突,哈希值可能永远不会 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
...
通读文档中的方法,看看哪一种更适合你。
hashCode()
您可以通过以下方式覆盖默认函数:
@Override
public int hashCode() {
// Unique hashcode generating function goes here
return hash;
}
一种方法可能是使用name.hashCode()+symbol.hashCode()
.