我正在尝试创建一个抽象类Coin,具有实例变量名称(String),符号(类型为java.awt.Image)和hash(一个String)。问题是我需要创建属性哈希与默认hashcode()方法返回的属性哈希不同,因此具有唯一的硬币哈希值。
abstract class Coin {
private String name;
private Image symbol;
private String hash;
}
答案 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
...
仔细阅读文档中的方法,了解哪一方法适合您。