【发布时间】:2014-09-09 03:59:51
【问题描述】:
几天前我遇到了一个问题。现在我有数千万字,字符串类型。现在我决定将它们保存在数据库中并使用索引来保持它们的唯一性。我不想比较原始单词来保持它们的唯一性。我想确定一个字符串的 hashCode() 方法是否可以是唯一的,如果使用另一台笔记本电脑或不同的时间或类似的东西,它不会改变吗?
【问题讨论】:
-
不,它是确定性的。
-
hashCode 可以返回多少个 distinct 值?有多少个 distinct 字符串? GO!!! FIT IN!
-
无论如何,tldr;这不适合使用 hashCode。虽然像 SHA-x 这样的哈希没有这些“问题”(或者我们可以假装不太可能关心冲突),但如果只比较单个单词,那么生成的哈希(SHA-1 为 20 个字节)大于原始输入!没有胜利!
-
假设 RDBMS,将
AUTO-INCREMENT字段添加到您的表中,它将在INSERT期间填充唯一数字。 -
@user2864740 字符串的 hashCode 由 String API specification 定义,因此对于跨实现的相等字符串,它必须相同。
标签: java string unique hashcode