`
schumee
  • 浏览: 24617 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Effective Java 学习笔记第8条 --- 改写equals方法时必须覆盖hashCode方法

阅读更多

这点必须切忌,不然在你和hash-based集合打交道的时候,错误就会出现了。关键问题在于一定要满足相等的对象必须要有相等的 hashCode。如果你在PhoneNumber类中覆盖了equals方法,但是没有覆盖hashCode方法,那么当你做如下操作的时候就会出现问 题了。

 

Map m = new HashMap();
m.put(new PhoneNumber(408,863,3334),”ming”) 
 

当你调用m.get(new PhoneNumber(408,863,3334))的时候你希望得到ming但是你却得到了null,为什么呢因为在整个过程中有两个 PhoneNumber的实例,一个是put一个是get,但是他们两个逻辑相等的实例却得到不同的hashCode那么怎么可以取得以前存入的ming 呢。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics