本帖最后由 田啸 于 2012-4-4 10:17 编辑
HashSet不能添加重复的元素,当调用add(Object)方法时候,
首先会调用Object的hashCode方法判hashCode是否已经存在,如不存在则直接插入元素;
如果已存在则调用Object对象的equals方法判断是否返回true,如果为true则说明元素已经存在,如为false则插入元素。
a类中hasCode相同,然后调用Object里的equals,判断两个 new a() 不是重复元素
b类中hasCode不同,因此两个 new b() 不是重复元素
c类中hasCode全部相同且为equals 永远为true,则 c类的对象全部是重复元素
|