首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

不同对象的hashcode是否一定不一样解决思路

2012-05-20 
不同对象的hashcode是否一定不一样假设我创建了两个不同的类:User和AdminUser user1 new User()User us

不同对象的hashcode是否一定不一样
假设我创建了两个不同的类:User和Admin
User user1 = new User();
User user2 = new User();
user1和user2的hashcode值一定不一样吗
Admin admin1 = new Admin();
user1和admin1的hashcode值一定不一样吗

[解决办法]
当然不一定,hashcode本身就是个函数,是可以重载的,你完全可以写个函数总是返回固定值。

但hashcode函数从设计要求上来说,要尽量保证:不同对象的hashcode不同。


[解决办法]
补充下关于hashcode的设计目标,比如:

User user1 = new User("张三");
User user2 = new User("李四");
这种情况下应该尽量保证 user1 和 user2 的 hashcode 不一致,但是:

User user1 = new User("张三");
User user2 = new User("张三");
这种情况下应该尽量保证 user1 和 user2 的 hashcode 相同。

[解决办法]
hashCode 如果不重载,肯定会不一样

如果被重载了,就看自己的需要了
[解决办法]

探讨
谢谢楼上的回答 如果我不重载这个函数 结果是怎样的呢?

[解决办法]
需要从本质来了解hashCode:用来得到一个位置用来存放当前对象
就算算出是相同位置也会再分配
so 一样不一样要看算法,总之不确定

热点排行
Bad Request.