我只是无法提出比这更好的解决方案。
简单的例子:我吃饭。每顿饭都有描述,但是用不同的语言来描述。这就是MealDescription
由主键(MealId, LanguageId)
组成的原因。到现在为止还挺好。
This guide在这里告诉我我必须实现equals()
和hashCode()
,但是这样做是安全的:
@Override
public int hashCode() {
return (int) mealId.hashCode() + languageId.hashCode();
}
是否
mealId
和languageId
实际上是Long
类型,因为它们必须是id,所以必须一样?我所指的指南具有相同的功能:
private String name;
private long id;
// ..
public int hashCode() {
return (int) name.hashCode() + id;
}
那么如何解决呢?
最佳答案
哈希原则上不如对象多样化。您可以将两个或多个对象映射到同一哈希。始终从0
返回hashCode()
甚至是合法的(尽管非常糟糕)
另一个示例,无论消息多长时间,MD5哈希都是128位。