1. Object默认 hashCode 使用对象的地址计算散列码,equals 比较对象的地址
String的hashCode和equals与字符串内容有关,new String("hello")相同的对象,hashCode和equals相同;可以在HashSet<String>中测试,字符串相同的多个String实例不会重复
2. HashSet 对是否相同的对象采用的算法
e.hash == hash && ((k = e.key) == key || key.equals(k)),其实使用HashMap对Key值不重复的判断
所以非java的基础对象,需要重写hashCode和equals方法
由此可见hashCode不必是唯一的,不同对象其值相同,hashCode就可以相同
3. 关于hashCode的生成可以参照String
资料 http://www.cnblogs.com/xudong-bupt/p/3960177.html
本文探讨了Java中Object默认的hashCode实现原理及其与equals方法的关系,并深入分析了String类如何重写这两个方法来提高效率。同时介绍了HashSet如何利用hashCode进行元素的存储与查找,强调了自定义类时正确实现hashCode与equals的重要性。
865

被折叠的 条评论
为什么被折叠?



