Java提供的字符串Hashcode,有多大可能重复?

LamFeeling 2008-03-02 12:55:43
我现在有一个手头的项目,使用Hashcode作为字符串的主键,现在字符串的数目激增,我需要知道,这些Hashcode在多大可能内重复?

PS这些字符串都是规则的小写URL,例如http://www.csdn.net
这样的字符串大约有10万余个,如果重复的个数是两位数个是可以接受的。
...全文
4065 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kkkdyc 2008-03-03
  • 打赏
  • 举报
回复
10w个字符串的话重复的几率是比较小的……

顺便讲个重复的例子
Integer对象的hashcode等于该对象的int值;
任意一个string,取得他的hashcode X,
Integer a = X;
那么a和原string的hashcode就是相等的;
goodmrning 2008-03-03
  • 打赏
  • 举报
回复
学习
此博客已注销 2008-03-03
  • 打赏
  • 举报
回复 1
Hashcode作为字符串的主键?

我想hashcode不是用来生成唯一键的,而是让某个数量级的无顺序的对象,能够用最快的速度找到,而且不占用太多的内存空间。

象数据库那样不允许重复的,不适合用hashcode。 多大的重复度合适,得看应用和对象的总数量了。

每个hashcode 等同于一个小屋,里面可以放多个对象,他们的hashcode相同。而唯一键,代表每个人都分配了一个小屋,全部是单间。

个人理解,仅供参考。
syhan 2008-03-02
  • 打赏
  • 举报
回复
这个太不保险了,uuid什么的
老紫竹 2008-03-02
  • 打赏
  • 举报
回复
使用Hashcode作为字符串的主键?

我想hashcode不是用来生成唯一键的,而是让某个数量级的无顺序的对象,能够用最快的速度找到,而且不占用太多的内存空间。

象数据库那样不允许重复的,不适合用hashcode。 多大的重复度合适,得看应用和对象的总数量了。

每个hashcode 等同于一个小屋,里面可以放多个对象,他们的hashcode相同。而唯一键,代表每个人都分配了一个小屋,全部是单间。

个人理解,仅供参考。
bt_lose 2008-03-02
  • 打赏
  • 举报
回复
以下是java.lang.String的原代码:
public int hashCode() {
int h = hash;//默认0
if (h == 0) {
int off = offset;//默认0
char val[] = value;//字符串是用字符数组表示的.
int len = count;//字符串长度
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
hash = h;
}
return h;
}
他返回的是一个int类型的数据,而int的最大值是2147483647,你的是10w个字符串,机会应该很小,再说java本身应该会通过某种散列算法减少冲突的.

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧