Ziq*_*iqi 7 java string hashcode primary-key
我知道这似乎已经讨论过,答案是肯定的,String.hashCode可以为不同的字符串生成相同的值,但是不太可能(Java的hashCode可以为不同的字符串生成相同的值吗?).但它确实发生在我的应用程序中.
以下代码将生成相同的哈希码:-347019262(jave 1.7.25)
String string1 = "/m/06qw_";
String string2="/m/0859_";
System.out.println(string1+","+string1.hashCode());
System.out.println(string2+","+string2.hashCode());
Run Code Online (Sandbox Code Playgroud)
在这种情况下我确实需要哈希码,我想用它来为字符串生成唯一的主键.看来我做得不对.有什么建议吗?
非常感谢!
fge*_*fge 13
你误会了.hashCode().
合同的一部分是equals()必须具有相同的对象hashCode().然而,反之则不然:谁具有相同的两个对象hashCode()都没有必须equals().
这是一个有效的,尽管完全没用的hashCode()实现:
@Override
public int hashCode()
{
return 42; // universal answer
}
Run Code Online (Sandbox Code Playgroud)
您应该将字符串本身用作"主键".如果你想要一个"更有效"的键,你应该考虑输入字符串是什么格式,如果可能的话,提取这个输入的重要部分.
| 归档时间: |
|
| 查看次数: |
2066 次 |
| 最近记录: |