社区
Java SE
帖子详情
String 的hashCode()方法有什么作用和意义
seward
2002-11-09 12:43:01
什么场合可以使用
...全文
3764
7
打赏
收藏
String 的hashCode()方法有什么作用和意义
什么场合可以使用
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunyax
2002-11-12
打赏
举报
回复
Hashcode()使用在HashTable时产生Hash code(可以参考数据结构的散列表),而equal()则用来比较两个object是否相等。这两个方法都可以由用户重写。(Java中自带的equal()是比较内存地址的,在大多数情况下不符合用户的需求)
String的HashCode()是在String被用作Key时(插入HashTable)产生Hash code,在String的equal()中也用到了HashCode()。这两者的作用是不一样的,只是在String的实现中恰好可以用来比较。(这也说明Java的String.HashCode()写得好,可以产生独一无二的Hash code!)
一句话:在比较object时使用equal()
在需要object作为key(使用HashTable)时使用Hashcode()
以上是我的理解,如果有什么不对的地方,请大家指导我
谢谢
smallfox
2002-11-12
打赏
举报
回复
最重要的有三条:(用英文写是因为它们给我印象太深了)
HashCode() is explicitly used in methods where hash functions are used, like hashTable() etc.
One should always override hashCode() when overriding equals(). Unexpected behaviour will occur if you don't do so.
HashCode() should have the same value whenever equals() returns true.
andytu
2002-11-11
打赏
举报
回复
equals()跟hashcode()都可以用来比较对象,前者是一个常用的方法,后者可以通过不同的对象有不同的散列码来比较两个对象
qljsd
2002-11-11
打赏
举报
回复
关注
hotenM
2002-11-10
打赏
举报
回复
不懂,总之我昨天看一个ejb的例子上面是这么说的
用hashcode来比较比用equals好
hyhong_h
2002-11-10
打赏
举报
回复
错!比较对象是否相同应该用equals方法。hashcode方法在把对象放到一个对象容器时大派用常,一个好的hashcode算法和坏的算法,在把对象放入容器和从容器取出时,效率相差极大!
hotenM
2002-11-09
打赏
举报
回复
这个方法继承于object
用户比较对象是否相同
同样的对象有同样的hashcode
Java中
hashCode
方法
的
作用
hashcode
方法
返回该对象的哈希码值,其值一般是该对象在内存上的地址。
hashCode
的常规协定是: 在Java应用程序执行期间,在同一对象上多次调用
hashCode
方法
时,必须一致地返回相同的整数,前提是对象的equals比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。 如果根据equals(Object)
方法
,两个对象是相等的,那么每个对象调用
hashCode
方法
都必须生成相同的整数结果。 以下情况不是必需的: 如果根据equa
hashCode
()或
HashCode
的
作用
是什么?
2)
HashCode
哈希码是该对象的内存地址通过哈希Hash算法计算出的一个整数值,代表该对象在哈希表中的位置,
作用
主要是为了提高查找对象的快捷性,通过
HashCode
可以快速定位对象的存储地址。(1)
hashCode
()是Object类中的native(本地)
方法
,底层使用c/c++语言实现,用于获取该对象的
HashCode
哈希码。(3)两个对象进行比较,先通过
HashCode
比较,如果
HashCode
相等,在调用equals()
方法
比较,提高效率。为什么要有
hashCode
()?......
由
String
.
hashCode
方法
引发的int类型乘法溢出的思考
由
String
.
hashCode
方法
引发的int类型乘法溢出的思考一、
String
.
hashCode
()二、问题引出三、整数在计算机中的表示四、解释结果参考 文中说明不当的,欢迎指正! 本文主要讨论
String
.
hashCode
()的实现以及延伸整数在Java虚拟机表示的问题。 一、
String
.
hashCode
() 最近在看
String
.
hashCode
()
方法
源码,首先看下这个
方法
干了些什...
String
的
HashCode
为什么使用 31 作为乘数?
String
的
HashCode
为什么使用 31 作为乘数?
String
的
HashCode
为什么使用 31 作为乘数?1、
HashCode
源码2、来自 stackoverflow 的回答3、Hash 碰撞概率计算3.1 读取单词字典表3.2 Hash 计算函数3.3 Hash 碰撞概率计算3.4 单元测试4、Hash 值散列分布4.1 哈希值分段存放4.2 单元测试4.2.1 乘数 2 的散列4.2.2 乘数 7 的散列4.2.2 乘数 31 的散列4.2.2 乘数 199 的散列5、总结
String
的H
Java中
hashCode
的
作用
以下是关于
HashCode
的官方文档定义:
hashcode
方法
返回该对象的哈希码值。支持该
方法
是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。
hashCode
的常规协定是: 在 Java 应用程序执行期间,在同一对象上多次调用
hashCode
方法
时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。从某一应用
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章