通过分析JDK源代码研究Hash存储机制 - 编程入门网
als() 比较的标准。
通过分析JDK源代码研究Hash存储机制(7)时间:2010-12-08 IBM 李刚hashCode() 和 equals() 关于如何正确地重写某个类的 hashCode() 方法和 equals() 方法,请参考 疯狂 Java 体系的《疯狂 Java 讲义》一书中相关内容。 如下程序就正确重写了 Name 类的 hashCode() 和 equals() 方法,程序如 下:
上面程序中提供了一个 Name 类,该 Name 类重写了 equals() 和 toString() 两个方法,这两个方法都是根据 Name 类的 first 实例变量来判断 的,当两个 Name 对象的 first 实例变量相等时,这两个 Name 对象的 hashCode() 返回值也相同,通过 equals() 比较也会返回 true。 程序主方法先将第一个 Name 对象添加到 HashSet 中,该 Name 对象的 first 实例变量值为"abc",接着程序再次试图将一个 first 为"abc"的 Name 对象添加到 HashSet 中,很明显,此时没法将新的 Name 对象添加到该 HashSet 中,因为此处试图添加的 Name 对象的 first 也是" abc",HashSet 会判断此处新增的 Name 对象与原有的 Name 对象相同,因此无法添加进入,程 序在①号代码处输出 set 集合时将看到该集合里只包含一个 Name 对象,就是 第一个、last 为"123"的 Name 对象。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |