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