A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 潜伏 中级黑马   /  2013-11-22 23:33  /  1532 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

还有TreeMap在导入键的时候,里面的键需不需要实现comparable方法呢???

1 个回复

倒序浏览
只有类的实例对象要被采用哈希算法进行存储和检索时,这个类才需要按要求覆盖
hashcode()。即使程序可能暂时不会用到当前类的hashcode()方法,但是为它提供一个
hashcode()方法也没什么不好,没准以后什么时候又用到这个方法了,所以,通常要求
hashcode()方法和equals方法一并被同时覆盖。
        要点:(1)通常来说,一个类的两个实例对象用equals()方法比较的结果相等时,
        它们的哈希码也必须相等,但反之则不成立,即equals方法比较结果不相等的
        对象可以有相同的哈希码。或者说哈希码相同的两个对象的equals方法比较的
        结果可以不等,例如,字符串"BB"和"Aa"的equals方法比较结果肯定不相等,但
        它们的hashcode方法返回值却相等。
        (2)当一个对象被存储进HashSet集合中以后,就不能修改这个对象中的那些参与
        计算哈希值的字段了,否则,对象修改后的哈希值与最初存储进HashSet集合中时
        的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用
        作为的参数去HashSet集合中检索对象,也将返回找不到对象的结果,这也会导致
        无法从HashSet集合中单独删除当前对象,从而造成内存泄露。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马