Java Object hashCode()的小点

探讨了Java中hashCode方法的一致性要求及其在不同JVM实例中的表现,特别是protobuf对象的hashCode变化。同时,揭示了字符串hashCode碰撞可能导致HashMap性能退化的问题。
摘要由CSDN通过智能技术生成

Tip 1:

官方文档中的一句话:“Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.”
目前已知protobuf的相关对象会出现不同JVM实例的hashCode不一致。

Tip 2:

"We want a different system".hashCode();
"\0We want a different system".hashCode();

上面两个字符串hashCode一样,但是不equals。如果出现恶意攻击会导致HashMap哈希冲突,使得某个Entry后的链表会变长,本来是O(1)的HashMap会变成O(n)的链表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值