作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我实在想不出比这更好的解决方案了。
简单的例子:我吃饭了。每顿饭都有一个描述,但有不同的语言。这就是为什么 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;
}
那么效果如何呢?
最佳答案
原则上,哈希的多样性不如对象。您可以将两个或多个对象映射到同一散列。从 hashCode()
0
甚至是合法的(尽管非常糟糕)
另一个例子,MD5 哈希值是 128 位,无论消息有多长。
关于java - 将长 id 哈希为整数 id 如何安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30225831/
我是一名优秀的程序员,十分优秀!