如何生成一个合适的字符串生成hashcodee方法

我们知道在Object类中的成员方中有个生成散列码的方法
&&&&& public int hashCode()
他是用来生成散列码的
1、我们首先分析一下哈希表的原理
比如:HashMap&String , Integer& hs =
&&&&&&& new HashMap&String , Integer&();
&&&&&& String str = &qwe& ;
&&&&&& Integer value = 23 ;
&&&&&& hs.put(str,value);
那么在内存中关键字(str)和存储值(value)是怎样存储的呢?如下:
这样就将Key 与 Value 之间生成一种映射关系
2、这个hashCode()方法非常有用,在所有的与Hash字眼相关的类(姑且称为hash类)中,这个方法是非常重要的,而且这些hash类几乎都必须重写这个方法,以便是该类能够正常运行
3、首先在Object类中的hashCode(),在没有经过重写之前,他是根据实例对象的存储地址来生成散列码的
4、但是很多情况下(几乎所有实际情况下),我们根据对象的存储地址生成散列码是不能够达到预期目的的,我们往往是想根据实例对象的内容来生成散列码,比如如果两个实例对象的内容一模一样,但是存储地址不一样,我们还是想为他们生成相同的散列码,比如在HashSet、HashMap等类中
这时我们就要自己重写这个hasCode方法了;
(需要注意的是一些常用的类如String类、基本数据类型的包装类等已经重写了这个方法,确保了如下的实现规则:
只要当两个对象的内容一致时,那么通过hashCode()生成的散列码是一样的)
5、一个好的散列函数是非常难于确定的,那么当为一个类重写该方法时,应该怎样写呢?在《Thinking in java》
一书当中17.9.3 覆盖hasCode()一节当中有非常详细的介绍,先摘录一部分
&& hashCode()用来生成散列码的类的内部的属性,必须是equals()用来判定两对象相等的属性,因为如果对象不相等的话,一般要具有不同的散列码
当然最简单的一种方法就是直接利用String类型的成员域来生成散列码,即在当前的元素类中加入一个String类型的成员域,专门用这个字符串对象生成该元素类的散列码,当然必须保证每个元素对象的这个String类型的成员域应该有不同的内容,这样就可以在元素类中的hashCode()方法中直接返回 return str.hashCode();这样是很简单的,但是这有时难以做到的,不太稳定
阅读(...) 评论()开源中国在线工具
工具分类索引
在线API文档工具提供各种语言的几十种文档,供开发者在线查阅。
在线API文档工具提供各种语言的几十种在线文档,包括常见的JAVA、JQuery、Ruby等,供开发者在线查阅。
RunJS,在线编辑运行HTML、CSS、JS,让JS飞一会儿!
RunJS,在线编辑运行HTML、CSS、JS,让JS飞一会儿!提供代码编辑,预览,分享,Fork,主题设置等多种功能。
专业的崩溃监控工具,支持iOS、Android平台及Unity、Cocos应用。
专业的崩溃监控工具,支持iOS、Android平台及Unity、Cocos应用。
这里提供IT开发人员常用的对照表,比如ASCII,HTML转义字符,RGB颜色等。
提供IT开发人员常用的对照表,比如ASCII,HTML转义字符,RGB颜色,Http Content-type等。
在线正则表达式匹配、替换
在线正则表达式匹配、替换,另有多种常用正则表达式提供方便使用
这个小工具提供在线文本加密/解密,散列,提供BASE64、SHA1、MD5、AES等多种算法
这个小工具提供在线文本加密/解密,散列,提供SHA1、MD5、HMAC、AES、RC4、Rabbit、Base64等多种算法,采用开源的Crypto-JS库实现。
生成生成QR码,能够提供多参数设置生成QR码,可以对输出图像格式(GIF/JPEG/PNG),纠错级别,类型,边缘留白(Margin),原胞大小进行设置
生成生成QR码,能够提供多参数设置生成QR码,可以对输出图像格式(GIF/JPEG/PNG),纠错级别,类型,边缘留白(Margin),原胞大小进行设置
该工具提供对Java、JavaScript、CSS、HTML、JSON、SQL的代码格式化功能。
该工具提供对Java、JavaScript、CSS、HTML、JSON、SQL的代码格式化功能。
此工具可以提供在线将代码关键字着色、加行号等功能,并提供输出HTML.
此工具可以提供在线将代码关键字着色、加行号等功能,并提供输出HTML,支持常见的20多种编程语言,方便在做代码演示的时候使用。
用户可以通过该工具在线压缩Javascript和CSS代码。
用户可以通过该工具在线压缩Javascript和CSS代码,此工具使用的是YUICompressor引擎。
该工具为开发者提供Native到Unicode、ASCII的编码转换
该工具为开发者提供Native到Unicode、ASCII的编码转换
此工具可以实现2~36进制之间任意进制转换,支持浮点型。
此工具可以实现2~36进制之间任意进制转换,支持浮点型。
该工具提供对MathML、LaTeX、数学公式的在线编辑,生成图片功能。
该工具(MathML Edit)提供对MathML、LaTeX、数学公式等的在线编辑,生成图片功能。
这个工具可以在线将您的LESS代码编译成CSS代码,方便前端人员使用
这个工具可以在线将您的LESS代码编译成CSS代码,方便前端人员使用
这个工具可以帮助开发者将web上的文本转换成HTML文档。
Markdown 是一个 Web 上使用的文本到HTML的转换工具,可以通过简单、易读易写的文本格式生成结构化的HTML文档。
此工具可以方便开发者在UBB和HTML之间互转。
UBB是一种网页中的替代HTML代码的安全代码,他具有少量的文本格式,例如加粗、颜色等,此工具方便UBB/HTML互转。
该工具提供在线CSV转换为HTML的表格,能够快速的将CSV数据转换页面展示数据。
该工具提供在线CSV转换为HTML的表格,能够快速的将CSV数据转换页面展示数据。
该在线工具提供大量常用jQuery插件的演示,为您节省插件选择的时间,并提供在线对示例进行编辑。
该在线工具提供大量常用jQuery插件的演示,为您节省插件选择的时间,并提供在线对示例进行编辑。
工具在不断的补充和完善中,如果您有好的工具或者意见与建议,请或通过 oschina.net(#) 告知我们。
在此填写您的意见信息:
Email邮箱: (必填)
您的建议和意见:关于何时重写hashCode(),怎样重写hashCode()
[问题点数:20分,结帖人wxx]
关于何时重写hashCode(),怎样重写hashCode()
[问题点数:20分,结帖人wxx]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。Hashcode()方法详解_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Hashcode()方法详解
上传于||文档简介
&&J​A​V​A​ ​ ​哈​希
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩16页未读,继续阅读
你可能喜欢}

我要回帖

更多关于 字符串生成hashcode 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信