社区
Java SE
帖子详情
hashcode的问题 新手哈 过年好大家~
结贴是美德
2012-01-22 03:20:38
我在一本书中看到说成员变量的hashcode值以如下方式的到,我不明白这么做有什么效果?
...全文
105
11
打赏
收藏
hashcode的问题 新手哈 过年好大家~
我在一本书中看到说成员变量的hashcode值以如下方式的到,我不明白这么做有什么效果?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
结贴是美德
2012-01-24
打赏
举报
回复
[Quote=引用 10 楼 flycutter__zfz 的回复:]
hashCode的计算方法当然不是固定的,我们是可以自己进行定义的。lz表中列出的计算方法是能够比较好的保证hashCode的使用特性的,因为我们要尽可能的保证不同的对象计算出的hashCode值是不同的。
我们完全可以自己简单的定义hashCode的计算方法,比如都返回1,或者返回根据某个属性计算出来的值,但这样就会使hash的效率变低
[/Quote]
原来是这样。。谢谢大家
Flycutter
2012-01-24
打赏
举报
回复
hashCode的计算方法当然不是固定的,我们是可以自己进行定义的。lz表中列出的计算方法是能够比较好的保证hashCode的使用特性的,因为我们要尽可能的保证不同的对象计算出的hashCode值是不同的。
我们完全可以自己简单的定义hashCode的计算方法,比如都返回1,或者返回根据某个属性计算出来的值,但这样就会使hash的效率变低
MiceRice
2012-01-22
打赏
举报
回复
[Quote=引用 5 楼 ihtml 的回复:].
这表里对每种类型的数据都在做转换,就是没明白为何还要计算一下?这么计算一下就是hashcode了?
[/Quote]
hashcode 规定是int,所以必然需要做转换。转换有两个目标:1、转换代价低;2、重复率低。
结贴是美德
2012-01-22
打赏
举报
回复
这几个转换是固定的么?有没有其他的计算hashcode的途径?那本书接下来在上面计算出的hashcode值前面,分别还加上了个系数,系数是任意的质数。这优势什么原理?
cstur4
2012-01-22
打赏
举报
回复
就是返回一个值,这个值相等的话,那么两个对象就是相等的,否则不一定相等,需要调用equals()进行进一步确认[Quote=引用 5 楼 ihtml 的回复:]
引用 2 楼 ldh911 的回复:
引用楼主 ihtml 的回复:
我不明白这么做有什么效果?
你的问题是什么?是hashcode的作用还是hashcode生成的方式?
这表里对每种类型的数据都在做转换,就是没明白为何还要计算一下?这么计算一下就是hashcode了?
[/Quote]
结贴是美德
2012-01-22
打赏
举报
回复
[Quote=引用 2 楼 ldh911 的回复:]
引用楼主 ihtml 的回复:
我不明白这么做有什么效果?
你的问题是什么?是hashcode的作用还是hashcode生成的方式?
[/Quote]
这表里对每种类型的数据都在做转换,就是没明白为何还要计算一下?这么计算一下就是hashcode了?
爱摸鱼de老邪
2012-01-22
打赏
举报
回复
效果就是降低hashCode发生碰撞的概率
cstur4
2012-01-22
打赏
举报
回复
骚年,你不吃年夜饭啊[Quote=引用 2 楼 ldh911 的回复:]
引用楼主 ihtml 的回复:
我不明白这么做有什么效果?
你的问题是什么?是hashcode的作用还是hashcode生成的方式?
[/Quote]
MiceRice
2012-01-22
打赏
举报
回复
[Quote=引用楼主 ihtml 的回复:]
我不明白这么做有什么效果?
[/Quote]
你的问题是什么?是hashcode的作用还是hashcode生成的方式?
cstur4
2012-01-22
打赏
举报
回复
hasCode()当对象相等时hasCode()应该相等。这样可以让值不一样的对象返回不同的hasCode,但不是绝对的,也就是做初步的判断。当hasCode值相等时,对象不一定相等(调用equals()方法进一步验证);当对象相等时,hasCode()的返回值一定是相同的。当然,这得你自己重写这两个方法进行保证。
Java中为什么要重写
hashCode
方法和equals方法?重写了equals方法为什么还要重写
hashCode
方法? 啊~~终于明白了
在我们开发中,可能经常听到重写
hashCode
方法和equals方法,这是为什么呢? 为了更容易通俗易懂,来个小故事缓解一下激动的心情~~ 打个比方,一个名叫张三的人去住酒店,在前台登记完名字就去了99层100号房间,此时...
java
hashcode
在线_java
hashcode
以下是关于
HashCode
的官方文档定义:
hashcode
方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable提供的哈希表。
hashCode
的常规协定是:在Java应用程序执行期间,在同一对象上...
Java基础篇:什么是
hashCode
以及
hashCode
()与equals()的联系
1、什么是
hashCode
:
hashCode
就是对象的散列码,是根据对象的某些信息推导出的一个整数值,默认情况下表示是对象的存储地址。通过散列码,可以提高检索的效率,主要用于在散列存储结构中快速确定对象的存储地址,...
hashcode
原理 / 比较器 / 聚合操作
类似平时查字典,先找目录找到多少页,然后直接翻到对应的页码就好了,而这个页码就是HashMap中的
hashcode
HashMap性能卓越的原因
hashcode
概念:所有的对象都会有一个对应的
hashcode
(散列值) 保存数据:在对应...
Java中
hashCode
的作用
以下是关于
HashCode
的官方文档定义:
hashcode
方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。
hashCode
的常规协定是: 在 Java 应用程序执行期间,...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章