摘自:Head First Java
当你把对象加入HashSet时,它会使用对象的hashcode值来判断对象的加入的位置。但同时也会与其他已经加入的对象的hashcode进行比较,如果没有相符的hashcode,HashSet就会假设新对象没有重复出现。
也就是说,如果hashcode是相异的,则HashSet会假设对象不可能是相同的。
因此,你必须override过hashCode方法来确保对象有相同的值。
但有相同hashCode()的对象也不一定相等,如还会调用equals方法来检查hashcode相等的对象是否真的相同。
散列算法及其应用:http://www.iwms.net/n923c43.aspx