我只是无法提出比这更好的解决方案。

简单的例子:我吃饭。每顿饭都有描述,但是用不同的语言来描述。这就是MealDescription由主键(MealId, LanguageId)组成的原因。到现在为止还挺好。

This guide在这里告诉我我必须实现equals()hashCode(),但是这样做是安全的:

@Override
public int hashCode() {
    return (int) mealId.hashCode() + languageId.hashCode();
}


是否mealIdlanguageId实际上是Long类型,因为它们必须是id,所以必须一样?

我所指的指南具有相同的功能:

private String name;
private long id;
// ..
public int hashCode() {
    return (int) name.hashCode() + id;
}


那么如何解决呢?

最佳答案

哈希原则上不如对象多样化。您可以将两个或多个对象映射到同一哈希。始终从0返回hashCode()甚至是合法的(尽管非常糟糕)

另一个示例,无论消息多长时间,MD5哈希都是128位。

10-02 00:47
查看更多