1. 如果想让自定义的java类的对象在 Set 中可以模拟基本类型,只保存一份。(即令自定义的java类的对象之间可以进行“是否相等”的比较)
则需要:重写自定义java类的 equals(Object o)方法和 hashCode()方法。
关于这点的解释:
(转自:http://blog.youkuaiyun.com/miss_yu/article/details/437473 )
1.在散列(hashing)中,一個關鍵字的信息內容被用來確定唯一的一個值,稱位散列碼(hashcode)
2.1. Rule: If the equals() method returns true, then hashCode() for both the objects must return the same value. Note that the reverse is not required. So, it is ok if the equals() method returns false but the hashCode() returns same value for both the objects.
2.2. The hasCode() method does not satisfy the requirement:
If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result.
For example, equals() will return true for: new Info("aa", "b", "c") and new Info("a", "ab", "c") but their hashCode() values will be different.
2.3 So we must overiding equals() and hascode() in bean ,assure the two object is equals
注意:在重写 equals( Object o)方法的时候, 要注意它的参数类型应是 Object ,不允许是其他的类型,否则就并非在重写 equals方法了。